Tôi biết rằng câu hỏi How do I secure my database connection credentials?
đã được hỏi và trả lời nhiều lần (ví dụ: How to secure database passwords in PHP?).Bảo mật thông tin kết nối cơ sở dữ liệu
Câu trả lời thường được chấp nhận cho câu hỏi đó là lưu trữ các chi tiết bên ngoài gốc web. Nhưng tôi tò mò là tại sao điều này thực sự tạo ra nhiều sự khác biệt.
Từ những gì tôi hiểu, một người không thể tải xuống nguồn của tệp PHP qua HTTP (trừ khi máy chủ web của bạn không được định cấu hình đúng cách, nhưng bạn sẽ biết điều đó ngay lập tức). Vì vậy, bạn sẽ không thể xem thông tin đăng nhập trừ khi bạn có quyền truy cập vào nguồn của tệp PHP anyways. Đúng nếu tôi sai, nhưng điều này không có nghĩa là bạn sẽ cần truy cập shell? Và nếu bạn có quyền truy cập trình bao, bạn có thể truy cập tệp bên ngoài gốc web không? Nếu câu trả lời cho câu hỏi đó là tệp bao gồm có quyền đặc biệt không cho phép bất kỳ ai ngoài người dùng máy chủ web đọc nó, thì (xem xét rằng tôi có quyền truy cập trình bao), tôi không thể viết (hoặc sửa đổi) bất kỳ tập tin PHP để chỉ echo ra những thông tin đăng nhập?
Vì vậy, câu hỏi là, thực hiện thực sự có tạo sự khác biệt nào cho dù bạn lưu trữ thông tin xác thực trực tiếp trong tập lệnh PHP so với tệp bên ngoài gốc web không?
Có điều này thực sự đã xảy ra với facebook một lần! http://techcrunch.com/2007/08/11/facebook-source-code-leaked/ – fire
Hoặc ngăn chặn lỗi này: http://eindbazen.net/2012/05/php-cgi-advisory-cve-2012- 1823/ – Tchoupi
@Dev Câu hỏi là: * tại sao chúng ta nên lưu trữ thông tin đăng nhập db bên ngoài webroot? *. Điều này trả lời câu hỏi. – Tchoupi