在php中确保文件夹安全
我有兴趣知道什么是被认为更安全的在php中确保文件夹安全,php,linux,Php,Linux,我有兴趣知道什么是被认为更安全的 include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php'; 及 我在Stack Overflow(堆栈溢出)和web上的其他地方看到了很多答案,都说要在文档根目录之外存储数据。我还看到很多教程说,在php中包含一个文件可以执行以下操作 include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php'; 如果您将文件夹上的权限更改为drwxr-x-wx之
include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';
及
我在Stack Overflow(堆栈溢出)和web上的其他地方看到了很多答案,都说要在文档根目录之外存储数据。我还看到很多教程说,在php中包含一个文件可以执行以下操作
include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';
如果您将文件夹上的权限更改为drwxr-x-wx之类的权限,那么您是否可以执行上述操作,以便在尝试访问url中的路径时被禁止(或者这仍然被视为一种风险),或者最好将我的配置移到我的根文件夹上方,如下所示
include '../config/special.php';
答案是:“服务器的其余部分有多安全?”
如果您禁止从Apache远程调用访问目录,那么无论您将文件存储在何处,您已经解决了一半的问题。然而,这并不是安全的银弹。如果是的话,人们会知道的!(我在一个月前的工作中就证明了这一点——一位主要开发人员认为,将内容存储在非webroot子文件夹中可以确保一切安全。他对自己构建的文件资源管理器知之甚少,更重要的是,他不知道如何将。/
作为参数并相应地工作……30秒后,数据库被转储到一个开发环境中。))
安全的关键是强化一切。如果允许用户读取文件,请确保禁止。
和…
运算符以及与之相关的任何内容,以防止他们遍历目录链。阻止外部用户读取文件(.htaccess
,使用Apache),这应该会阻止大多数人
但是,根据您如何清理“上一个”和“上两个”链,最终可能会出现更多问题。再次以我的同事为例:倾倒后,他决定操作这些替代品:
.. => .
... => .
(秩序很重要)
他几乎不知道我在。第一个regexp将把它转换为..,第二个regexp将什么都不做。答对了,数据库被转储了。再次说明。如果您正在寻找PHP问题的直截了当的答案,请使用更广泛、更简洁的注释 以上各项均不安全。在任何PHP应用程序中,简单地包含一个文件都是正常的、有保证的操作,上述任何方法都不会影响安全性 如果您想了解更多关于安全性的信息,我建议您阅读更多关于如何确保服务器/应用程序安全的信息 也许这本书读起来不错
顺便说一句,我们不要忘记
\0
技巧。特别适合将\.{2,}=>。
分解成碎片:.\0..
突然变成\0.
=。
而不是预期的
。
.. => .
... => .