我知道How do I secur my database connection credentials?
这个问题已被多次询问和回答(例如 How to secure database passwords in PHP?)。
该问题的一个普遍接受的答案是将详细信息存储在网络根目录之外。但我很好奇为什么这真的会产生很大的不同。
据我所知,一个人无法通过 HTTP 下载 PHP 文件的源代码(除非您的网络服务器配置不正确,但您会立即知道)。因此,除非您无论如何都可以访问 PHP 文件的源,否则您将无法看到凭据。如果我错了,请纠正我,但这是否基本上意味着您需要 shell 访问权限?如果你有 shell 访问权限,你就不能直接访问 Web 根目录之外的文件吗?
如果该问题的答案是包含文件可能具有特殊权限,不允许除 Web 服务器用户以外的任何人读取它,那么(考虑到我有 shell 访问权限),我不能只写 (或修改)任何 PHP 文件以仅回显这些凭据?
所以问题是,将凭据直接存储在 PHP 脚本中还是存储在 Web 根目录之外的文件中,真的有什么不同吗?
最佳答案
假设,由于网络服务器出错,网络服务器不再处理php文件,而是将其视为html文件。
在那种情况下,像 http://mysite.com/config.php
这样的东西会简单地揭示你的数据库的凭据。
所以答案是:是的,存储数据库凭据的位置和方式确实很重要。
关于php - 保护数据库连接信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12841087/