【发布时间】:2011-03-26 03:29:32
【问题描述】:
我在自己的小框架中有一个“globabVars.php”文档,其中包含数据库连接变量等...我认为将其存储在面向 Web 的目录之外会更安全一些.但是,然后我在想,它真的那更安全吗?我的意思是,如果有人能够查看我的 .php 文件作为一个整体(没有服务器处理它们),他们将在我的服务器内查看我的所有文件......
想法?
【问题讨论】:
我在自己的小框架中有一个“globabVars.php”文档,其中包含数据库连接变量等...我认为将其存储在面向 Web 的目录之外会更安全一些.但是,然后我在想,它真的那更安全吗?我的意思是,如果有人能够查看我的 .php 文件作为一个整体(没有服务器处理它们),他们将在我的服务器内查看我的所有文件......
想法?
【问题讨论】:
如果您不小心错误配置了 apache,将配置文件移到 Web 根目录之外可以防止该文件泄露。例如,如果您删除 Apache 的 mod_php,那么所有 .php 文件都将被视为文本文件。由于这个原因,我已经看到配置文件移动到生产系统上的 Web 根目录之外,它确实阻止了文件泄露! (管理员在更新期间冻结了配置,doah!)。虽然这并不经常发生。
如果攻击者可以控制以下函数之一的路径:file_get_contents()、fopen()、readfile() 或 fgets(),那么他就可以读取您系统上的任何文件。您还必须担心sql注入。例如 MySQL 下的这个查询可以用来读取文件:select load_file("/etc/passwd")。
要缓解此问题,请从 PHP 使用的 MySQL 用户帐户中删除 FILE 权限。也做一个chmod 500 -R /path/to/web/root,最后两个零可以防止任何其他帐户访问文件。您还应该使用 chown www-data -R /path/to/web/root 跟进它,其中 www-data 是执行 php 的用户帐户,您可以通过 <?php system('whoami');?> 来解决这个问题。
【讨论】:
GRANT 权限,这是您不应该拥有的。
这意味着默认情况下没有人可以通过 URL 访问它。
如果.htaccess 在您的文档根目录中是,您可以隐藏它,但是将其存储在文档根目录之上会更安全。
如果您的应用程序容易出现directory traversal attacks,您可以通过 PHP 读取它。
【讨论】:
是的,你是对的。差别很小。
【讨论】: