我在我自己的小框架中有一个“globabVars.php”文档,其中包含数据库连接变量等...我认为在面向Web的目录之外存储以保持更安全。但是,那时我在想,这真的那么更安全吗?我的意思是,如果有人能够整体查看我的.php文件(没有服务器处理它们),他们就会在我的服务器中查看我的所有文件...
思想?
答案 0 :(得分:5)
如果您不小心错误配置了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
,最后2个零会阻止任何其他帐户访问这些文件。您还应该使用chown www-data -R /path/to/web/root
跟进,其中www-data是执行php的用户帐户,您可以通过执行<?php system('whoami');?>
来解决这个问题。
答案 1 :(得分:2)
这意味着默认情况下没有人可以通过URL访问它。
如果您的docroot中的 ,则可以隐藏.htaccess
,但将其存储在docroot上面只是更安全一点。
如果你的应用程序容易出现directory traversal attacks,你可以通过PHP阅读。
答案 2 :(得分:2)