我知道该问题How do I secure my database connection credentials?
已被多次询问和回答(例如,如何在 PHP 中保护数据库密码?)。
该问题的一个普遍接受的答案是将详细信息存储在 Web 根目录之外。但我很好奇为什么这真的有很大的不同。
据我了解,一个人无法通过 HTTP 下载 PHP 文件的源代码(除非您的网络服务器配置不正确,但您会立即知道这一点)。因此,除非您无论如何都可以访问 PHP 文件的源,否则您将无法看到凭据。如果我错了,请纠正我,但这基本上不意味着您需要 shell 访问权限吗?如果你有 shell 访问权限,你就不能访问 web 根目录之外的文件吗?
如果该问题的答案是包含文件可能具有不允许除 Web 服务器用户之外的任何人读取它的特殊权限,那么(考虑到我有 shell 访问权限),我不能只写(或修改)任何 PHP 文件只是回显这些凭据?
所以问题是,将凭据直接存储在 PHP 脚本中还是存储在 Web 根目录之外的文件中真的有什么区别吗?