当有人获取存在的拒绝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
当有人访问一个不存在的 URL 时,他会得到:
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
通过这种方式,某人可以找到有关某个区域的目录结构的信息,该区域实际上不向公众开放。这是真的?
如果我是偏执狂,我该怎么办?只是好奇。
请注意,这并不一定告诉他们
/admin/admin.php
存在。如果/admin
被禁止,/admin/notthere.php
也将是一个403 Forbidden
. 因此,它并没有明确泄露有关您的目录结构的任何信息。如果您是偏执狂,您可以创建一个根受保护的子域。这样,对于未经授权的用户,任何 url 都会产生一条
403 Forbidden
消息您可以配置 Apache 对错误的反应方式,例如为每个错误设置一个 ErrorDocument: http ://httpd.apache.org/docs/2.0/mod/core.html#errordocument
您可能可以使用 SetEnvIf 来检查某些内容,例如 Remote_Addr 是否是内部的,然后使用 mod_rewrite 根据环境变量给出 404。