Apache DocumentRoot 的安全性

use*_*452 6 security documentroot apache-2.2

我有一个关于 Apache 安全性的一般性问题DocumentRoot,该问题来自我在安装 Galaxy(一种生物信息学 Web 服务和基础设施)时阅读的声明。声明说

“请注意,Galaxy 永远不应位于 Apache 的 DocumentRoot 内的磁盘上。
默认情况下,这会将所有 Galaxy(包括数据集)暴露给网络上的任何人。”

本段复制自 https://wiki.galaxyproject.org/Admin/Config/ApacheProxy

所以问题是将某些内容放入DocumentRoot与放入 的子目录之间有什么区别DocumentRoot?即使将内容放在子目录中,默认情况下,所有内容也会暴露给网络上的任何人吗?

如果我把在内容DocumentRoot的的SSL服务器,并且只允许经过身份验证和授权的用户访问,将这一决心在全球范围内访问问题?

更新:感谢大家的深思熟虑的回答。我想我已经回答了所有问题。总结一下:

  1. 除非设置了不同的权限,否则所有人都可以访问 DocumentRoot 中的子目录。

  2. SSL 只保护通过网络传输的数据包,而不保护文件的权限。

  3. 身份验证/授权将限制谁可以访问 DocumentRoot。

  4. Unix/Linux 文件权限不会影响访问,因为 Web 服务器所有者必须可以访问所有文件。

Joe*_*man 12

DocumentRoot 的子目录仍被视为在 DocumentRoot 中。

当某些软件包建议不要将包的一部分放置在 DocumentRoot 中时,其意图是它实际上应该在 DocumentRoot 之外。

因此,例如,如果您的 DocumentRoot 是/var/www/example.com/html您可能希望将这些文件完全放在其他地方,例如/var/www/example.com/restricted

不,SSL 不能解决,甚至不能解决有关在文档根目录中包含敏感配置文件的问题!


小智 6

要添加到 Joe Sniderman 的答案中,将文件放在文档根目录之外会使在浏览器中输入 url 的用户无法访问它们,但仍可用于在文档根目录中运行的脚本。

例如,您创建了一个匿名化和聚合用户登录数据的报告。您将脚本放在文档根目录中,/var/www/example.com/html/report.php以便其他人可以看到您的站点有多受欢迎。

您的报告必须使用原始用户数据,因此它引用一个文件/var/www/example.com/restricted/login.log作为源。该文件不在文档根目录中,因此除了通过 report.php 之外无法访问,它无论如何都会对数据进行匿名化。您不希望原始数据是公开的,因此您将敏感数据远离文档根目录。