为什么将MySQL凭据放在www目录之外?

时间:2012-12-20 16:25:44

标签: php mysql security credentials

  

可能重复:
  Putting core classes above the web root - good or bad idea?

我一直在阅读,在Web根目录之外(在www文件夹之上)放置MySQL连接凭据(无论是类,定义等等)是最佳做法。

这是为什么?如果凭据在.php文件中,那么文件是否可以通过浏览器访问并不重要,对吗?

3 个答案:

答案 0 :(得分:8)

这是一种预防措施。如果有人意外地在您的apache服务器中禁用了php评估或更改.htaccess文件中的apache设置,则该文件可以像任何纯文本文件一样提供。或者,如果您意外忘记了php开始标记,它将像纯文本一样重新获得。并不是说你犯了这么愚蠢的错误,但未来的新手可能会犯错误。

为什么要在可以防止可能的情况下打开可能的向量?只需听取其他人的建议(或者像我一样,用双脚和一只手射击)并将凭证移到你的docroot之外。

答案 1 :(得分:5)

因为,在某种程度上,Web根目录下的任何内容都不安全。它可以在互联网上获得,这使它本身就不安全。

错误配置的服务器总有可能有一天输出任何PHP文件的内容,而不是将其发送给PHP进行解释。还有太多的人试图以任何方式进入你的数据库...其中一些只是为了好玩。

在任何给定情况下,您应始终使用最安全的方法。这是一个很好的习惯。

此外,您应该永远在您的网络应用程序中使用root密码。创建一个具有最小权限的特殊用户。

对于PHP,我总是使用.ini文件来存储敏感配置......

<?php
    $config = parse_ini_file('../config.ini');
?>

答案 2 :(得分:2)

因为可以从互联网上访问www目录(即您网站的根目录)中的内容。

这意味着如果您将凭据放在此处,也许有人可以访问它们,并直接连接到您的数据库。

将您的凭据放在此目录之外可确保以这种方式无法访问它。