当有人取一个被否认存在的 URL,他获得:
Forbidden
You don't have permission to access /admin/admin.php on this server.
Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.9 with Suhosin-Patch Server
当有人访问不存在他将获得:
Not Found
The requested URL /notexisting/notthere.php was not found on this server.
Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.9 with Suhosin-Patch Server
这样,有人就可以找到某个区域内的目录结构信息,而这些信息实际上并未向公众开放。这是真的吗?
如果我偏执了,我该怎么办?只是好奇。
答案1
您可能可以使用 SetEnvIf 来检查某些内容,例如 Remote_Addr 是否是内部的,然后使用 mod_rewrite 根据环境变量给出 404。
答案2
请注意,这并不一定会告诉他们/admin/admin.php
存在。如果/admin
被禁止,/admin/notthere.php
也会是403 Forbidden
。因此,它并没有明确泄露有关目录结构的任何信息。
如果你比较谨慎,你可以创建一个子域名,让根目录受到保护。这样,对于未经授权的用户,任何 URL 都会产生一条403 Forbidden
消息
答案3
您可以配置 Apache 对错误的反应方式,例如为每个错误设置一个 ErrorDocument: http://httpd.apache.org/docs/2.0/mod/core.html#errordocument