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