2010-06-14 48 views
9

Tôi đã xem các đề xuất để lưu trữ một số hoặc tất cả các tệp php bao gồm một số nơi khác trong thư mục gốc của tài liệu web (tên người dùng/public_html trong trường hợp của tôi) vì lý do cụ thể thông tin (như kết nối cơ sở dữ liệu và thông tin đăng nhập) trong trường hợp máy chủ web bị trục trặc và ngừng bảo vệ các tệp php và chúng trở thành 'có thể nhìn thấy' đối với những người bên ngoài biết nơi cần tìm.Lưu trữ các tập tin script bên ngoài web root

Có vẻ như hơi hoang tưởng đối với tôi, nhưng tôi đoán mọi người đã bị đốt cháy nặng nề về điều này trước đây nên tôi sẵn sàng đi cùng. Đề xuất này thường có dạng bao gồm các tệp trong một cái gì đó như '../include_files/' để nó không trực tiếp trong gốc tài liệu và không thể truy cập trực tiếp vào bên ngoài thông qua máy chủ web.

Câu hỏi của tôi là: có sự khác biệt đáng kể về bảo mật giữa cách đó và chỉ cần đặt thư mục 'include_files' của bạn dưới gốc tài liệu và dán tệp .htaccess vào đó (với các mục thích hợp)? Sẽ đặt một tập tin .htaccess trong '../include_files/' thực hiện bất kỳ cải tiến đáng kể nào ở đó?

TIA,

Monte

Trả lời

13

Sử dụng .htaccess thêm phí trên vì Apache có một mục khác cần kiểm tra và xử lý.

Lưu tệp ra khỏi gốc web không bị hoang tưởng, đó là thực tiễn tốt. Điều gì sẽ xảy ra nếu ai đó truy cập trực tiếp vào một trong các tệp "bao gồm" và nó phát hiện ra các lỗi vì tất cả các tệp cần thiết trước đã không được tải?

Mỗi tệp cần có kiểm tra bảo mật riêng để đảm bảo rằng tệp đang chạy trong môi trường dự kiến. Mỗi tập tin thực thi trong một khu vực truy cập web là một lỗ hổng bảo mật tiềm năng.

+0

1 để chỉ ra những nhược điểm hiệu suất của .htaccess (cũng có, nếu bạn chỉ định AllowOverride None, Apache thậm chí không tìm kiếm các tập tin). Đồng ý về các điểm khác của bạn w/liên quan đến việc giữ các tập tin ra khỏi gốc tài liệu; nó mất một vài phút để thiết lập (đặc biệt là với một __autoload/spl_autoload_register), vậy tại sao không làm điều đó? –

+0

vấn đề là: bạn không thể làm điều đó trong nhiều/hầu hết các lưu trữ được chia sẻ. Không? – docesam

+0

Trong máy chủ chia sẻ kinh nghiệm của tôi cung cấp cho bạn một thư mục có thư mục www trong thư mục được đặt ở chế độ công khai. –

4

Nó thực sự phụ thuộc vào những gì bạn có trong include_files của bạn. Điều quan trọng nhất là bạn đặt bất kỳ thông tin đăng nhập nào bạn có bên ngoài của tài liệu gốc (cơ sở dữ liệu đăng nhập, vv). Mọi thứ khác thực sự là thứ yếu và không quan trọng lắm.

Nếu bạn không muốn bất cứ ai ăn cắp mã nguồn của bạn sau đó cố gắng làm theo công ước Zend:

application 
library 
public 

điểm DocumentRoot để public và chỉ chứa các tập tin media, js/file css. HTML/lượt xem, logic db, conf/thông tin đăng nhập nằm trong application. Thư viện của bên thứ ba nằm trong số library.

0

Về mặt lý thuyết, nếu bạn chỉ cần dính vào một tập tin .htaccess trong thư mục, bạn có thể vẫn có các file .php gọi trực tiếp.

Đưa chúng ra khỏi thư mục gốc của máy chủ; tuy nhiên, giữ cho chúng không bị truy cập bao giờ bởi một người đang duyệt trang web của bạn.

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