我对Apache的Directory指令有疑问,这是他们在文档(http://httpd.apache.org/docs/2.4/mod/core.html#directory)中所说的内容:
请注意< Directory“/”>的默认访问权限是允许所有访问。这意味着Apache httpd将提供从URL映射的任何文件。建议您使用
等块更改此设置<Directory "/"> Require all denied </Directory>
但是如果我只设置了DocumentRoot
,那么Apache如何做他们所说的(提供从URL映射的任何文件),例如:
DocumentRoot "/usr/local/apache/htdocs"
否Alias "/some/webspace/path" "/"
,UserDir
或其他映射到系统根/
目录的网址映射规则?
在文档的另一部分(安全提示http://httpd.apache.org/docs/2.4/misc/security_tips.html#protectserverfiles)中,我们可以猜到UserDir的半完整示例:
偶尔被误解的Apache的一个方面是 默认访问功能。也就是说,除非你采取措施改变 如果服务器可以通过普通URL找到文件的方式 映射规则,它可以为客户提供服务。
例如,请考虑以下示例:
# cd /; ln -s / public_html Accessing http://localhost/~root/
这将允许客户端遍历整个文件系统。要解决此问题,请将以下块添加到服务器的配置中:
<Directory "/"> Require all denied </Directory>
这将禁止默认访问文件系统位置。
他们对Directory
http://httpd.apache.org/docs/2.4/mod/core.html#directory
指令的说法只是警告,如果您使用像mod_userdir
这样的模块,就像他们在http://httpd.apache.org/docs/2.4/misc/security_tips.html#protectserverfiles
显示一样?或者还有其他什么,也许还有一些关于Directory
的详细信息没有在文档中给出?
感谢您的关注!
答案 0 :(得分:0)
在Apache中,有无限的假设插件/指令可以改变 如何将URL映射到文件系统。明显的/主流的是DocumentRoot,Alias,AliasMatch,RewriteRule,UserDir等。但是没有人知道其他可能存在的东西。
Apache简单地将URI与文件系统映射完全分开,核心是否愿意从该文件系统位置实际提供服务。
有几种方法可以意外地暴露事物,例如使用mod_rewrite,默认配置文件使用&lt; Directory /&gt;上的默认值来保护您。手册并不总是强调编译默认值和默认conf的内容之间的差异。后者可以在重新包装时改变,这很棘手。