Thiết lập File & Directory Permission chính xác cho ứng dụng Laravel

Chương 1: Thiết lập File & Directory Permission chính xác cho ứng dụng Laravel

Laravel là một Framework tương đối dễ dàng để thiết lập và làm việc. Tuy nhiên, cũng như tất cả mọi ứng dụng PHP khác, nếu không được thiết lập quyền hạn cho các file và thư mục một cách chính xác, ứng dụng Laravel của bạn cũng sẽ dễ dàng bị hack và gặp những sự cố trong quá trình hoạt động.

Một ví dụ khá đơn giản đó là, nếu bạn cấp cho bất kỳ thư mục nào của mình quyền 777, bạn đang cho phép BẤT CỨ AI đọc, ghi và thực thi bất kỳ tệp nào trong thư mục đó. Điều này có nghĩa là bạn đã cho phép BẤT CỨ AI (bất kỳ tin tặc hoặc kẻ phá hoại nào trên toàn thế giới) được phép tải lên BẤT KỲ file, vi-rút hoặc bất kỳ tệp nào khác và sau đó thực thi tệp đó ...

Có 2 cách để thiết lập chủ sở hữu và quyền hạn cho các file và thư mục cho ứng dụng Laravel của bạn, dựa vào phương pháp mà bạn thiết lập webserver của mình. Nhưng trước tiên, hãy đảm bảo rằng terminal đang ở vị trí root của ứng dụng Laravel của bạn.

cd /path/to/your/laravel/app

Webserver user là owner:

Giả sử rằng nginx (hoặc www-data trên ubuntu) là webserver user của bạn.

sudo chown -R nginx:nginx .

Trong trường hợp này, nginx user và nginx group là owner của mọi file và thư mục trong ứng dụng. Khi đó, bạn sẽ gặp vấn đề nếu upload file lên server thông qua các trình FTP, bởi FTP Client đăng nhập với tư cách của bạn, không phải nginx.

Để giải quyết vấn đề này, hãy thêm bạn vào group của webserver bằng câu lệnh:

sudo usermod -a -G nginx myusername

Sau đó, CHMOD quyền hạn cho các thư mục thành 755 và file thành 644:

sudo find . -type f -exec chmod 644 {} \;
sudo find . -type d -exec chmod 755 {} \;

Cuối cùng, cần cho phép webserver được phép đọc và ghi các thư mục cần thiết:

sudo chgrp -R nginx storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Bạn chính là owner:

Tôi thích sử dụng phương pháp này hơn vì vừa đảm bảo tính bảo mật cao, đồng thời cũng có thể dễ dàng làm việc và chỉnh sửa.

Trước tiên, hãy chuyển quyền sở hữu bằng câu lệnh:

sudo chown -R $USER:nginx .

Sau đó CHMOD các thư mục thành 775 và file thành 664:

sudo find . -type f -exec chmod 664 {} \;
sudo find . -type d -exec chmod 775 {} \;

Tương tự cách trên, sau đó bạn cũng cần cho phép webserver có quyền đọc và ghi dữ liệu vào các thư mục quan trọng:

sudo chgrp -R nginx storage bootstrap/cache
sudo chmod -R ug+rwx storage bootstrap/cache

Bạn thấy đấy, chỉ với vài bước đơn giản là chúng ta đã có thể cải thiện khá nhiều khả năng bảo mật cho ứng dụng Laravel của mình rồi. Nếu bạn muốn nâng cao hơn nữa, hãy tiếp tục theo dõi những chương tiếp theo về bảo mật Laravel của QMAS nhé.

Công ty TNHH Giải pháp Website & Ứng dụng phần mềm Quang Minh

🚩 Địa chỉ
Số 81 Võ Huy Tâm, Phường Cẩm Trung, Thành phố Cẩm Phả, Tỉnh Quảng Ninh
📞 Điện thoại
(0862) 814-787
💌 Email
[email protected]
🌐 Zalo OA
https://zalo.me/369605269295116980
🌐 Facebook
https://www.facebook.com/qmasdotvn/
🌐 Twitter