保护SQL密码的最佳方法

时间:2013-03-06 12:10:21

标签: php mysql database password-protection

我使用了很多PHP脚本,每个文件中都有数据库信息,包括数据库名称和密码。

我想保护这条信息,以确保没有人可以访问。

信息可以存储在一个单独的文件中,然后在需要时由PHP脚本读取。

我的问题是 - 我在哪里存储,如何以及如何防止未经授权访问该文件?我也愿意接受其他建议,以最佳方式保护密码。

2 个答案:

答案 0 :(得分:2)

可能有更好的解决方案,但我将我的存储作为apache环境启动的一部分(只能在服务器上以root身份读取)。如果您使用的是其他服务器技术,则可以执行相同操作,也可以使用某些模拟功能。

#site.example.com
Include includes/credentials/site.conf

#includes/credentials/site.conf
<Directory /srv/www/html>
    SetEnv DB_HOST "server"
    SetEnv DB_USER "user"
    SetEnv DB_PASS "passwd"
</Directory>

这也允许您控制每个目录的“凭据”,如果这有助于您。

在php中,您可以使用以下内容进行连接:

$pdo = new PDO("mysql:host=$_SERVER[DB_HOST]", $_SERVER['DB_USER'],
    $_SERVER['DB_PASS']);

编辑:当您想要连接到您自己的mysql实例之类的其他内容时,这也使您可以灵活地更改凭据。如果您可以控制(可能是首选),您可以使用.htaccess覆盖或更改环境。

答案 1 :(得分:0)

从维护的角度来看,在您的业务文件中包含DB Info非常危险。如果您将网站移动到新服务器,请考虑您必须完成的工作量。

我建议使用Data Access Object Pattern

现在,在这个DAO类的任何文件夹中,放一个简单的index.html,在访问时显示一个空白页面。 Joomla根据提供的rationale使用此方法。