保护数据库连接信息

Tra*_*ty3 9 php database security webserver credentials

我知道问题How do I secure my database connection credentials?已被多次询问和回答(例如,如何在PHP中保护数据库密码?).

该问题的一个普遍接受的答案是将详细信息存储在Web根目录之外.但我很好奇为什么这真的有很大的不同.

根据我的理解,一个人无法通过HTTP下载PHP文件的源代码(除非您的Web服务器配置不正确,但您会立即知道).因此,除非您无论如何都可以访问PHP文件的源代码,否则您将无法看到凭据.如果我错了,请纠正我,但这不是基本上意味着你需要shell访问吗?如果你有shell访问权限,那么你不能直接访问web root之外的文件吗?

如果该问题的答案是包含文件可能具有除了Web服务器用户之外不允许任何人读取它的特殊权限,那么(考虑到我有shell访问权限),我不能只写(或修改)任何PHP文件只是回显这些凭据?

所以问题是,是否将凭证直接存储在PHP脚本中而不是存储在Web根目录外的文件中是否真的有所不同?

Jvd*_*erg 8

假设,由于Web服务器中的错误,Web服务器不再处理php文件,而是将它们视为html文件.

在这种情况下,类似的东西http://mysite.com/config.php会简单地显示数据库的凭据.

所以答案是:是的,它确实很重要,存储数据库凭据的位置和方式.


Nik*_*kiC 5

主要问题是Web服务器可能会在以后崩溃.例如,在软件更新之后,php可能无法正常工作,服务器会回退到直接交付文件.或者在软件更新后再次重置配置,因此PHP不再注册文件扩展名.或者服务器在负载很重的情况下崩溃,并且还开始明确地提供文件.

很多事情都可能发生,而且在某些时候搞乱配置相当容易.更安全,并将其保留在文档根目录之外.