我有一个关于Apache的目录指令的问题,这里是他们在文档中所说的(http://httpd.apache.org/docs/2.4/mod/core.html#directory):
注意
这样的块来更改它。的默认访问权限是允许所有访问。这意味着Apache httpd将为从URL映射的任何文件提供服务。建议您使用像 <Directory "/"> Require all denied </Directory>
但是如果我只设置了DocumentRoot
, Apache将如何做他们所说的(从URL映射任何文件),例如:
DocumentRoot "/usr/local/apache/htdocs"
没有Alias "/some/webspace/path" "/"
、UserDir
或其他映射到系统根目录/
的URL映射规则?
在文档的另一节(安全提示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
的一些细节没有在文档中给出?
感谢您的关注!
在Apache中,有无限的假设插件/指令可以改变 URL映射到文件系统的方式。明显的/主流的是DocumentRoot, Alias, AliasMatch, RewriteRule, UserDir等。但没有人知道还可能存在什么。
Apache只是将URI与文件系统映射完全分离,而不考虑内核是否愿意从该文件系统位置实际提供服务。
有几种方法可能会意外地暴露一些东西,比如使用mod_rewrite,默认配置文件通过默认设置