Di chuyển tệp cấu hình bên ngoài gốc web có thể ngăn tệp này bị rò rỉ nếu bạn vô tình định cấu hình sai apache. Ví dụ: nếu bạn xóa mod_php
của Apache thì tất cả các tệp .php sẽ được coi là tệp văn bản. Tôi đã thấy các tệp cấu hình được di chuyển bên ngoài gốc web trên các hệ thống sản xuất vì lý do này và nó đã ngăn tệp bị rò rỉ! (Quản trị viên đã cắm cấu hình trong khi cập nhật, doah!). Mặc dù điều này không xảy ra thường xuyên.
Nếu kẻ tấn công có thể kiểm soát con đường của một trong những chức năng: file_get_contents()
, fopen()
, readfile()
hoặc fgets()
sau đó ông có thể đọc bất kỳ tập tin trên hệ thống của bạn. Bạn cũng phải lo lắng về việc tiêm sql. Ví dụ truy vấn này dưới MySQL có thể được sử dụng để đọc các tệp: select load_file("/etc/passwd")
.
Để giảm thiểu vấn đề này, hãy xóa các đặc quyền FILE
từ tài khoản người dùng MySQL của bạn mà PHP sử dụng. Ngoài ra, hãy thực hiện một số chmod 500 -R /path/to/web/root
, 2 số 0 cuối cùng sẽ giữ cho bất kỳ tài khoản nào khác truy cập vào tệp. Bạn cũng nên theo dõi nó với một số chown www-data -R /path/to/web/root
trong đó www-data là tài khoản người dùng mà php được thực hiện như, bạn có thể hình dung điều này bằng cách thực hiện một <?php system('whoami');?>
.
Rook Rad :) Hãy để tôi hỏi bạn điều này. Nếu quyền truy cập của tôi vào các chương trình phía máy chủ bị hạn chế với những gì thường có trong quản trị viên như "cpanel", mà tôi cho là bạn đã quen thuộc, bạn có nghĩ rằng tôi có thể loại bỏ đặc quyền FILE hoặc chmod đường dẫn đó không? Tôi cảm thấy như truy cập của tôi bị giới hạn ở một cấp độ dưới web ... và tôi không nghĩ đó là nơi PHP đang ngồi. Đây có phải là cái gì tôi sẽ phải mất với một quản trị viên máy chủ? Tôi đang sử dụng hostgator btw ... bất kỳ câu chuyện kinh dị nào về họ? –
@ Jascha Tôi chưa nghe thấy gì về hostgator, mặc dù hầu hết các công ty lưu trữ đã khóa tài khoản MySQL của bạn. Dễ dàng kiểm tra, thử và kích hoạt truy vấn load_file đó. Có, bạn có thể chmod tập tin với cPanel. Bạn có thể thay đổi đặc quyền MySQL bằng phpmyadmin, nhưng bạn cần quyền 'GRANT' mà bạn không nên có. – rook