Php 文档根目录中的敏感信息

Php 文档根目录中的敏感信息,php,security,Php,Security,假设您有一个config.php,它保存敏感信息,如DB用户密码。不建议将该文件存储在文档根目录中,对吗 为什么会这样?在文档根目录的index.php中存储敏感信息是否更安全?在index.php中存储配置数据并不比config.php更安全;如果PHP无法解析它们的内容,它们同样容易被显示。对配置数据使用单独的文件的好处是,您可能会限制对它的访问,从而有效地防止任何人通过HTTP协议读取它,并确保您的数据安全(r),即使PHP没有对其进行解析。对我来说,首先想到的是一种错误配置,允许用户下载

假设您有一个config.php,它保存敏感信息,如DB用户密码。不建议将该文件存储在文档根目录中,对吗


为什么会这样?在文档根目录的index.php中存储敏感信息是否更安全?

index.php
中存储配置数据并不比
config.php
更安全;如果PHP无法解析它们的内容,它们同样容易被显示。对配置数据使用单独的文件的好处是,您可能会限制对它的访问,从而有效地防止任何人通过HTTP协议读取它,并确保您的数据安全(r),即使PHP没有对其进行解析。

对我来说,首先想到的是一种错误配置,允许用户下载或查看.PHP文件,而不是解析它们并将它们表示为text/html。假设您执行升级,出现问题,Apache不再解析您的脚本。有人注意到Apache正在以纯文本形式发送您的PHP文件,并且能够打开
config.PHP
,查看源代码(以及其中所有敏感的数据库配置参数)。

进一步了解这个想法。理想情况下,您只需要在web根目录中存储一个访问代码库和静态文件(如图像和css)的简单脚本

eg:

webroot/index.php
webroot/images/img1.jpg
webroot/images/img2.jpg
webroot/css/base.css

lib/myclass1.php
lib/myclass2.php
您的index.php将如下所示:

<?php
$CODEBASE = '/usr/home/wwwuser/wherever/it/is';

include $CODEBASE."/lib/myclass1.php";

$code = new MyClass1();
$code->doStuff();

?>


如果PHP没有解析,您可以看到simple index.PHP及其include。但是你怎么能看到不在文档根目录中的敏感内容呢?原始海报已经编辑了他的帖子。它最初询问在index.php中存储配置数据是否比在config.php中更安全,两者都位于文档根目录之上。不是。