2012-05-10 49 views
0

我有一個垃圾郵件機器人/爬蟲來我的網站,顯示了像這樣在Apache日誌請求的問題:阿帕奇mod_rewrite的HTTP_USER_AGENT有特殊字符發出

"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最重要的執行條款(扔在提高安全性,其他)。

我的語法錯誤在哪裏?我怎樣才能阻止這些請求?

回答

0

問題是,當您鍵入\ x09時,那不是特殊字符 - 它是字符\,x,0和9.如果您需要選項卡,請嘗試使用\ t替代 - 這是選項卡的正則表達式版本。所以的RewriteCond應該是這樣的:

RewriteCond %{HTTP_USER_AGENT} ^\tMozilla [NC,OR] 
+0

這不是有效的停止要求。即使按照您的建議更改了.htaccess,我仍然可以在Apache日誌中看到滿足「HTTP 200」的請求 – user1111380

0

好了,結束了使用以下,似乎是停止在其軌道的機器人有403錯誤:

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]