5

可能重复:
将核心类放在网络根目录之上——好主意还是坏主意?

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

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

4

3 回答 3

9

这是一种预防措施。如果有人意外禁用了您的 apache 服务器中的 php 评估或更改了 .htaccess 文件中的 apache 设置,则该文件可以像任何纯文本文件一样提供。或者,如果你不小心忘记了一个 php 开始标签,它会像纯文本一样被重新渲染。并不是说您会犯如此愚蠢的错误,而是将来编写您的代码的新手可能会犯错误。

当您可以阻止它成为可能时,为什么要让可能的向量保持打开状态?只需听取其他射过自己脚的人的建议(或者像我一样,双脚和手都射过),然后将凭证移到您的文档根之外。

于 2012-12-20T16:27:42.977 回答
6

因为,在一定程度上,Web 根目录下的任何内容都不是安全的。它可以在 Internet 上获得,这使得它本质上不安全。

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

在任何给定情况下,您都应该始终使用最安全的方法。养成一个好习惯。

此外,您永远不应该在 Web 应用程序中使用 root 密码。创建具有最低权限的特殊用户。

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

<?php
    $config = parse_ini_file('../config.ini');
?>
于 2012-12-20T16:27:05.097 回答
2

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

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

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

于 2012-12-20T16:27:13.130 回答