我最近发现,只要我给出完整路径,我的网络服务器就会提供文件系统上它有读取权限的任何文件。换句话说,
http://www.example.com/Users/john/Desktop/Costa%20Rica/DSC_0058.jpg
将很乐意由网络服务器提供服务。这是尽管每个DocumentRoot
设置仅指向/Library/WebServer/Documents
。
为什么 Apache 会为整个文件系统提供服务?可以关闭它吗?
答案1
尝试查找一个<Directory />
部分并确保该标签内的任何设置都是有限制的。
还要检查 mod_userdir 是否已启用并配置。查找类似以下标签UserDir
答案2
我还是不知道这是什么原因造成的。
我发现它只提供文件服务,/Users/john
而不提供文件系统的其余部分(服务器的正确文档根目录除外),所以我认为这与某些巧妙的 OS X 文件共享有关。
我检查了mod_userdir
,但未启用。我检查了所有Directory
和Location
部分,没有任何似乎可以访问 下的文件/Users/john
。配置中没有john
特别提到,我也找不到任何匹配该项的正则表达式。它似乎与文件扩展名无关(“提供所有图像”之类的东西有点道理,但事实并非如此。)
因此,经过几个小时的努力,我最终<Location /Users>
在全局变量中添加了一个部分httpd.conf
,禁用了所有人的访问,如下所示:
<Location "/Users">
Order Deny,Allow
Deny from all
</Location>
<Directory />
(据记录,这也正是我的部分的样子。)
这不是最好的解决方案,但它似乎拒绝访问不应该提供的文件。
因为这对我有用,所以我会接受它作为答案。我感谢 Safado 给我的帮助,如果将来有其他人来并且有任何线索,请发布!这台服务器很可能至少会继续使用一段时间,如果存在更合适的解决方案,我很乐意尝试。