0

我遇到了垃圾邮件机器人/爬虫程序进入我的网站的问题,其请求在 apache 日志中显示如下:

"GET / HTTP/1.1" 200 7128 "-" "\x09Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0"

这些请求的奇怪区别在于,出于某种原因,用户代理前面有一个制表符 ( \x09),因此我尝试为这些请求创建一个 .htaccess mod_rewrite 过滤器。

到目前为止,我未能成功创建一个适合拒绝这些请求的 RewriteCond。我尝试了以下方法:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^\x09Mozilla [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(%0A|%0D|%27|%3C|%3E|%00|%09).* [NC]
RewriteRule ^.* - [F,L]

%09制表符)是第二个 RewriteCond 中最重要的操作子句(为了增加安全性而加入的其他子句)。

我的语法错误在哪里?如何阻止这些请求?

4

2 回答 2

1

Ok, ending up using the following, seems to be stopping the bots in their tracks with a 403 error:

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Mozilla/5\.0.*Windows\ NT\ 5\.1;\ rv:5\.0.*Gecko/20100101\ Firefox/5\.0 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*(%0A|%0D|%27|%3C|%3E|%00|%09|\t|\x09).* [NC]
RewriteRule ^.* - [F,L]
于 2012-05-10T15:31:50.750 回答
0

问题是当你输入 \x09 时,这不是一个特殊字符——它是字符 \、x、0 和 9。如果你想要一个制表符,请尝试改用 \t——这是制表符的正则表达式版本。所以 RewriteCond 应该是这样的:

RewriteCond %{HTTP_USER_AGENT} ^\tMozilla [NC,OR]
于 2012-05-10T07:35:46.827 回答