Apache:使用 mod_access 返回 404 而不是 403

Apache:使用 mod_access 返回 404 而不是 403

我喜欢这种限制访问方法的语法Order deny,allow,而且我试图避免使用 mod_rewrite:有没有办法让未经授权的 IP 只看到 404 而不是 403(这是 HTTP 代码,表示“这里有绝密内容,请停止查看”?)

谢谢。

答案1

403 页面依赖于 Apache 提供该 html。您可以使用以下指令覆盖任何<Location>或指令:<Directory>ErrorDocument

<Directory /web/docs>
ErrorDocument 403 /404-page.html
</Directory> 

ETC..http://httpd.apache.org/docs/1.3/mod/core.html#errordocument

答案2

请注意,这看起来像但不是一个解决方案!

当仅提供自定义错误页面(例如,为 403 错误提供虚假的 404)时,您可能会在 Web 浏览器中获得所需的结果,但远程攻击者仍然能够从服务器获取真正的 HTTP 响应,即仍然是 403(禁止),因此,他可以猜测文件系统结构。

在这里你可以看到 curl -v -X GEThttp://desidered.path/forbidden_​​badly_hidden_​​folder/

`< HTTP/1.1 403 Forbidden
< Date: Thu, 04 Nov 2010 14:42:52 GMT
< Server: Apache/2.2.8 (CentOS)
< X-Powered-By: PHP/5.2.10
< Content-Length: 202
< Connection: close
< Content-Type: text/html; charset=ISO-8859-1
< 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>404 Not Found</title>

</head><body>

<h1>Not Found</h1>

<p>The requested URL was not found on this server.</p>`

好吧,我可以解决这个问题,并使用特定的每个文件夹规则获取所需的输出(404 未找到):

RewriteRule ^/WebSite/forbidden_badly_hidden_folder$ /error/fake_404_403.php
RewriteRule ^/WebSite/forbidden_badly_hidden_folder/$ /error/fake_404_403.php

其中 /error/fake_404_403.php 是故意不存在的页面,那么您将从相同的 curl 测试中获得以下输出:

< HTTP/1.1 404 Not Found
< Date: Thu, 04 Nov 2010 14:43:12 GMT
< Server: Apache/2.2.8 (CentOS)
< X-Powered-By: PHP/5.2.10
< Content-Length: 202
< Connection: close
< Content-Type: text/html; charset=ISO-8859-1
< 
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">

<html><head>

<title>404 Not Found</title>

</head><body>

<h1>Not Found</h1>

<p>The requested URL was not found on this server.</p>`

这是期望的行为;

我的问题是,是否可以编写一条全局规则,对 /var/www/html 和子文件夹上的任何 403(F)资源执行这样的工作,将其重写为不存在的路径,然后返回所需的 404 Not Found?

提前致以最诚挚的感谢

马可

相关内容