![](/img/trans.png)
[英]htaccess redirect with special ? character for php string mod_rewrite in apache
[英]apache mod_rewrite http_user_agent with special character issues
我的網站出現垃圾郵件漫游器/抓取工具的問題,而請求卻在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]
在第二個RewriteCond中, %09
(制表符)是最重要的執行子句(其他為提高安全性而拋出的子句)。
我的語法錯誤在哪里? 如何阻止這些請求?
好的,最終使用以下命令,似乎是在將機器人阻止在其軌道中,並顯示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]
問題在於,當您鍵入\\ x09時,這不是一個特殊字符-它是字符\\,x,0和9。如果要使用制表符,請改用\\ t-這是制表符的正則表達式版本。 所以RewriteCond應該看起來像這樣:
RewriteCond %{HTTP_USER_AGENT} ^\tMozilla [NC,OR]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.