以安全的方式在PHP应用程序中存储MYSQL的密码

时间:2014-04-29 14:32:21

标签: php mysql security

我有一个从代码连接到数据库的php应用程序。我在徘徊什么是存储这些凭据的安全方法?这是一个linux服务器。

编辑:我只是想听听一些明智的意见,以获得一个明智的意见myslef与我的团队讨论。我反对加密任何密码,但我的团队不相信。

我认为如果密码被加密,那么我们需要将解密密钥存储在纯文本的某个地方,从而使整个演出毫无意义。

4 个答案:

答案 0 :(得分:2)

没有"安全的方式"。无论如何,密码必须被解密/未经过模糊处理,因此可以将其发送到DB库以建立连接。

最好将登录信息存储在网站文档根目录的外部文件中。这不是万能的,但至少如果你的服务器的配置被破坏并开始提供php源而不是执行,它就不会让你的凭据漏掉,因为文件赢了&# 39;可直接访问。

答案 1 :(得分:0)

至少将其放在配置文件中,该配置文件无法通过网络服务器直接访问。

这样一来,有人必须先闯入你的机器才能阅读它。

答案 2 :(得分:0)

应用defense in depth并允许专用MySQL用户仅从 localhost 进行连接。然后,即使连接凭据以某种方式泄露,连接到数据库的唯一方法是通过Web服务器。

有了这个,攻击者就需要访问Web服务器并能够执行任意代码/命令。如果这可能受到损害,那已经太晚了。

答案 3 :(得分:-1)

同意其他人你需要披露一点......

但你可以使用php的crypt函数 http://docs.php.net/manual/en/function.crypt.php

首先使用此函数或其他函数加密密码,加密后将加密密码设置为数据库密码... [注意 - 我不知道mysql是否允许你存储crpt返回的值来设置为密码] 连接到db frm php时将原始密码传递给crpyt函数[或用于上面的函数/方法]将其存储在变量中,并在连接时提及此var

$encrpted_pass = crypt($original_password);
$con = mysql_connect("localhost","mysql_user",$encrpted_pass);

缺点 如果你直接连接到MySQL,你将很难记住密码 要解决此问题,您可以在想要直接连接时创建单独的数据库用户。

2)另一种方法是将密码存储在一个单独的文件中,检索文件的内容,将其存储在var中,然后使用该var连接到MySQL DB,这样你就不会泄露了用于连接到数据库的文件中使用的密码

$pass=file_get_contents("mysql.txt");
$con = mysql_connect("localhost","mysql_user",$pass);