如何安全地连接到数据库

时间:2014-07-31 01:08:24

标签: php mysql sql security

现在我只有一个包含我的数据库名称,用户,密码和主机的文件。如果有人只是双击该文件,他们就会拥有大量私人信息。如何更改它以便他们无法查看我的数据库信息。仅供参考PHP + MySql。 编辑: 怎么难理解?我有一个名为db.php的db文件,其中包含连接到db的所有信息。如果有人要在我的计算机上双击文件(db.php),他们会看到我的信息。在现实生活中,黑客可以获得此文件。我如何解决这个问题,以便黑客无法看到数据库信息,但我仍然能够连接到数据库?

这是一个合理的问题。

1 个答案:

答案 0 :(得分:1)

您的Web服务器将配置为处理某些文件类型。例如,当您加载PHP页面时,它不会(或不应该)将PHP输出到屏幕 - 而是处理它。

您有两个很好的选择来保护这些信息。

1)将详细信息存储在PHP文件中作为变量(您最有可能这样做)。很多时候,这些将在一个数组中:

$dbParams = array(
   'database' => 'my_db',
   'host'     => 'localhost',
   'username' => 'my_web_user',
   'password' => 'abc123',
);

只要你永远不输出$dbParams变量,你就没事了。

2)另一个选择是使用你在上面看到的内容,但不是文字值,而是引入environment variables

$dbParams = array(
   'database' => $_ENV['myapp_db_name'],
   'host'     => $_ENV['myapp_db_host'],
   'username' => $_ENV['myapp_db_username'],
   'password' => $_ENV['myapp_db_password'],
);

然后在您的服务器配置中,您可以将这些环境变量设置为您需要的任何内容。通过这种方式,如果由于某种原因PHP停止工作并开始以纯文本形式输出您的Web文件,他们将永远不会看到您的敏感信息。您还会注意到我 namespaced 环境变量。这是一个好主意,因为它们是全球性的,如果你只使用host这样的东西,你很可能会发生碰撞。

[编辑]

阅读更新的评论,听起来您担心本地计算机上的文件 - 而不是网络服务器。您应该采取必要的预防措施,以保护您的本地计算机免受远程访问(如防火墙,病毒扫描,希望防止木马等)。实际上,除非你是Facebook或谷歌,否则人们可能不会真正关心你的本地数据库密码是什么。