在PHP脚本中保护MySQL密码


Securing MySQL password in PHP script

我似乎无法得到一个直接的答案,所以希望有人能帮忙。

如果我在PHP脚本中包含mysqli_connect()语句,并且还包含MySQL用户名和密码,那么这些细节在任何时候都会受到攻击吗?显然,PHP括号之间的任何内容都不会在客户端提供(因此,在查看源代码等时不应查看),但是,是否有其他方式可以泄露这些细节?

如果由于某种原因,PHP突然不工作(例如,由于升级、配置文件损坏),这些文件可能会被用作HTML,登录信息将免费提供给任何访问网站的人。我以前见过这种情况。

解决这一问题的最佳方法是将所有内容从webroot中移出,除了只包含目录外一个文件的index.php文件。这也意味着您的源代码不会受到损害,假设PHP无法工作。

例如,/var/www/public_html只保存一个文件:index.php:

<?php require("../entrypoint.php");

然后,所有其他内容都位于/var/www中。如果PHP失败,那么只有index.php会受到损害。

这将使它非常安全,除非你的服务器本身受到威胁,或者你允许用户执行PHP代码,但这是另一个问题。大多数模块化CMS还会在连接初始化后取消设置所有连接变量,以避免其中一个模块意外暴露任何内容。