2012-09-16 23 views
5

Cách nào tốt nhất để ngăn chặn một số thư mục nhất định của trang web truy cập trực tiếp?cách tốt nhất để ngăn chặn các thư mục nhất định của trang web bị truy cập trực tiếp là gì?

1- Tạo và đặt một tập tin .htaccess trong mỗi thư mục chúng ta muốn bảo vệ và đặt dòng tiếp theo trong đó:

Deny from all 

2- Tạo và đặt một tập tin index.php trong mỗi thư mục chúng ta muốn bảo vệ và đặt chỉ dòng tiếp theo của mã trong nó (mà sẽ chuyển hướng đến trang chủ của trang web):

<?php header("Location: http://" . $_SERVER['HTTP_HOST']); ?> 

3- cái gì khác (đó là gì?)

+3

Ngoài ra, hãy sử dụng thư mục bên ngoài cây web và phân phối bất kỳ nội dung nào bên trong nó bằng cách sử dụng PHP. – halfer

+3

# 2 sẽ không ngăn mọi người truy cập trực tiếp vào tài liệu trong thư mục đó nếu họ biết tên của tài liệu. – octern

+0

Giả sử thư mục được sở hữu bởi UID của bạn sau đó xóa bỏ o: quyền truy cập lại sẽ ngăn Apache đọc nó hoặc nội dung của nó. Nếu bạn đang sử dụng mẫu suPHP/suExec/FastCGI cho php, v.v. thì tập lệnh của bạn sẽ chạy trong UID của bạn và sẽ có quyền truy cập đầy đủ (ứng dụng). – TerryE

Trả lời

5

Như đã đề cập trong các nhận xét, cách an toàn nhất là đặt nội dung hoặc thư mục bên ngoài gốc tài liệu công cộng của máy chủ web. Điều này sẽ đảm bảo rằng nội dung sẽ không được phân phối ngay cả khi tệp .htaccess bị xóa hoặc nếu máy chủ không cho phép ghi đè .htaccess.

Để xác định gốc tài liệu của bạn, bạn chỉ có thể lặp lại biến PHP $_SERVER['DOCUMENT_ROOT']. Vì vậy, nếu gốc của bạn là /var/www/html, bạn có thể tạo thư mục /var/www/protected_folder và Apache (hoặc máy chủ web khác) sẽ không bao giờ phục vụ (trừ khi tệp http.conf được thay đổi để sửa đổi thư mục gốc của tài liệu).

Nếu thư mục phải nằm trong thư mục gốc của tài liệu, sau đó sử dụng tệp .htaccess để DENY hoặc chuyển hướng là một lựa chọn tốt. Như TerryE đã đề cập, bạn cũng có thể sử dụng quyền tệp cấp OS để từ chối quyền truy cập của người dùng Apache vào thư mục (đặt người dùng khác làm chủ sở hữu và sau đó đặt quyền trên thư mục thành 700). Nếu họ cố gắng truy cập vào thư mục họ sẽ nhận được một lỗi 403 cấm mà bạn có thể không muốn hiển thị (mặc dù bạn có thể thiết lập một bộ xử lý lỗi 403 tùy chỉnh trong http.conf hoặc htaccess). Tùy thuộc vào cụ thể những gì bạn đang cố gắng làm, bạn có thể muốn phương pháp này, vì nó cũng sẽ cho phép bạn ngăn truy cập từ tập lệnh (ví dụ: PHP include() v.v.) nếu bạn muốn, vì PHP chạy theo người dùng máy chủ web theo mặc định. Nhược điểm chính của phương pháp này là quyền truy cập tập tin thường không được bảo toàn trong quá trình di chuyển (nếu chúng không được thực hiện đúng) và đôi khi các quyền của tệp có thể được đặt lại vô tình khi thay đổi quyền truy cập thư mục gốc bằng cờ đệ quy (trong khi không chắc ai đó vô tình di chuyển một thư mục vào thư mục gốc của tài liệu).

Các vấn đề liên quan