使php中的文件夹安全



我很想知道中什么更安全

include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';

include '../config/special.php';

我在Stack Overflow和网络上的其他地方看到了很多答案,说将数据存储在文档根之外。我也看过很多教程,说在php中包含一个文件,做一些类似的事情

include $_SERVER['DOCUMENT_ROOT'] . '/config/special.php';

如果你将文件夹上的权限更改为类似drwxr-x-wx的权限,这样如果你试图访问url中的路径(或者这仍然被认为是一种风险),你会被禁止吗?或者最好像下面这样将我的配置移到我的根文件夹上方。

include '../config/special.php';

答案是:"服务器的其余部分有多安全"?

如果您禁止Apache远程调用访问目录,那么无论您将文件存储在哪里,都已经解决了一半的问题。然而,这并不是安全的灵丹妙药。如果是的话,人们会知道的!(一个月前,我在工作中证明了这一点——其中一位首席开发人员认为,将内容存储在非webroot子文件夹中可以确保一切安全。他对自己构建的文件资源管理器知之甚少,更重要的是,他不知道如何将../作为参数并相应地工作……30秒后,数据库被丢弃在开发环境中)。

安全的关键是强化一切。如果允许用户读取文件,请确保禁止.....运算符以及与之相关的任何操作,以防止它们遍历目录链。阻止外部用户读取该文件(使用Apache的.htaccess),这应该会阻止大多数人。

然而,根据你如何清洁上一个和上两个链条,你可能会遇到更多问题。再次以我的同事为例:在垃圾场之后,他决定操作这些替代品:

.. => .
... => .

(订单很重要)

他几乎不知道我在。第一个regexp会把它变成。。,第二个regexp不会有任何作用。没错,数据库被丢弃了。再一次

如果您正在寻找PHP问题的直接答案,请注意更广泛、更简洁的说明。

以上内容都不安全或不安全。在任何PHP应用程序中,简单地包含一个文件都是一种正常且有保证的操作,并且上述任何方法都不会影响安全性。

如果您想阅读更多关于安全性的内容,我建议您阅读更多关于如何确保服务器/应用程序安全的内容。

也许这本书读起来不错。

http://www.ibm.com/developerworks/opensource/library/os-php-secure-apps/index.html

最新更新