我很想知道什么被认为更安全
include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';
和
include '../config/special.php';
我在Stack Overflow和网络上的其他地方看到很多答案,这些答案都说是在文档根目录之外存储数据。我也看过很多教程,说要在php中包含一个文件,比如
include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';
如果您将文件夹的权限更改为drwxr-x-wx之类的内容,如果您尝试访问网址中的路径(或者这仍然被视为风险),则可以禁止此操作或者将配置移动到我的根文件夹上面会更好,如下所示。
include '../config/special.php';
答案 0 :(得分:3)
答案是:“服务器的其余部分有多安全”?
如果您禁止从Apache远程调用访问该目录,则无论您在何处存储文件,都解决了一半问题。但是,这不是安全的银弹。如果是的话,人们会知道它! (我在一个月前的工作中证明了这一点 - 其中一位主要开发人员认为将内容存储在非webroot子文件夹中会使一切安全。他对他构建的文件浏览器了解甚少,更重要的是,它是如何做到的将../
作为参数并相应地工作...... 30s之后,数据库被转储 - 在开发环境中。)
安全的关键是加强一切。如果允许用户读取文件,请确保禁止..
和...
运算符及其相关内容,以防止它们遍历目录链。防止外部用户阅读文件(使用Apache .htaccess
),这应该阻止大多数人。
但是,根据您对上一个和上两个链的消毒方式,您可能会遇到更多问题。以我的同事为例:转储后,他决定操作这些替代品:
.. => .
... => .
(订单很重要)
他很少知道我投入....第一个regexp会把它变成..,第二个正则表达式什么都不做。宾果,数据库被抛弃了。试。
答案 1 :(得分:0)
如果您正在寻找PHP问题的直接答案,请使用更简洁的说明。
以上都不安全。简单地包含文件是任何PHP应用程序中的正常和保证操作,并且安全性不会受到上述任何方法的影响。
如果您想了解有关安全性的更多信息,我建议您阅读有关如何确保服务器/应用程序安全的更多信息。
也许这可能是一个很好的阅读。
http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/index.html