阻止Apache回答无效请求

时间:2014-06-10 17:48:47

标签: apache security

我有一个Apache网络服务器,可作为iPhone和iPad应用程序的Web前端,仅通过POST和JSON进行通信。

有没有办法阻止Apache回复无效的请求?我可以看到我的错误日志充满了尝试打开文件,例如/admin.php /index.php等 - 我服务器上不存在的文件。

我相信这可以通过IIS实现,但你能用Apache做同样的事情吗?

基本上我希望请求显示超时,除非您将正确的内容发布到正确的文件 - 或者至少如果您没有请求现有文件。这会使服务器看起来不存在给所有人,但我的iPhone用户,因为所有通信都是SSL,并且目录不是真的可以猜测。

我确实禁用了ServerTokens以及所有这些,但是当我访问请求随机文件的服务器时,我仍然得到File not found等,这就是这些机器人经常做的事情。

1 个答案:

答案 0 :(得分:0)

您可以使用mod_rewrite重定向或拒绝不需要的请求来限制Apache响应的HTTP方法。

请注意,JSON不是HTTP方法。 GET, POST, PROPFIND等是HTTP方法。有关HTTP方法的完整列表,请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

如果您的应用程序确实不需要尊重GET个请求,那么您可以阻止所有其他方法。

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_METHOD} !^(POST) [NC]
 RewriteRule ^(.*)$ - [F,L]
</IfModule>

我没有对此进行过测试,但它应该阻止除POST方法之外的任何其他内容。您可以添加多种方法。

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_METHOD} !^(POST|GET) [NC]
 RewriteRule ^(.*)$ - [F,L]
</IfModule>

仅允许POSTGET

由于处理重写方式,您可能还需要在某些服务器上指定“Options FollowSymLinks”。

如果您必须允许GET个请求,那么您将看到未找到的错误。没有什么能阻止某人为不存在的对象发出HTTP请求。