可能重复:
将核心类放在网络根目录之上——好主意还是坏主意?
我一直在阅读,将 MySQL 连接凭据(无论是类、定义等)放在 web 根目录之外(www 文件夹上方)是一种最佳做法。
为什么是这样?如果凭据在 .php 文件中,那么该文件是否可以通过浏览器访问并不重要,对吧?
可能重复:
将核心类放在网络根目录之上——好主意还是坏主意?
我一直在阅读,将 MySQL 连接凭据(无论是类、定义等)放在 web 根目录之外(www 文件夹上方)是一种最佳做法。
为什么是这样?如果凭据在 .php 文件中,那么该文件是否可以通过浏览器访问并不重要,对吧?
这是一种预防措施。如果有人意外禁用了您的 apache 服务器中的 php 评估或更改了 .htaccess 文件中的 apache 设置,则该文件可以像任何纯文本文件一样提供。或者,如果你不小心忘记了一个 php 开始标签,它会像纯文本一样被重新渲染。并不是说您会犯如此愚蠢的错误,而是将来编写您的代码的新手可能会犯错误。
当您可以阻止它成为可能时,为什么要让可能的向量保持打开状态?只需听取其他射过自己脚的人的建议(或者像我一样,双脚和手都射过),然后将凭证移到您的文档根之外。
因为,在一定程度上,Web 根目录下的任何内容都不是安全的。它可以在 Internet 上获得,这使得它本质上不安全。
总是存在这样一种可能性,即配置错误的服务器有一天会输出任何 PHP 文件的内容,而不是将其发送到 PHP 进行解释。还有太多人试图以任何方式进入您的数据库......其中一些只是为了好玩。
在任何给定情况下,您都应该始终使用最安全的方法。养成一个好习惯。
此外,您永远不应该在 Web 应用程序中使用 root 密码。创建具有最低权限的特殊用户。
对于 PHP,我总是使用.ini
文件来存储敏感配置...
<?php
$config = parse_ini_file('../config.ini');
?>
因为www
目录中的内容(即您网站的根目录)可能可以从互联网访问。
这意味着如果你把你的凭据放在这里,也许有人可以访问它们,并直接连接到你的数据库。
将您的凭据放在此目录之外可确保无法以这种方式访问它。