可能重复:
Putting core classes above the web root - good or bad idea?
我一直在阅读,在Web根目录之外(在www文件夹之上)放置MySQL连接凭据(无论是类,定义等等)是最佳做法。
这是为什么?如果凭据在.php文件中,那么文件是否可以通过浏览器访问并不重要,对吗?
答案 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
目录(即您网站的根目录)中的内容。
这意味着如果您将凭据放在此处,也许有人可以访问它们,并直接连接到您的数据库。
将您的凭据放在此目录之外可确保以这种方式无法访问它。