在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.
=
而不是预期的
.. => .
... => .