Linux

為什麼這個 .htaccess 文件不起作用?

  • October 26, 2010

最近,我的網站收到了來自各種機器人的數千個 POST 請求。

我沒有採取基於使用者代理阻止這些機器人的方法,而是決定找到一種方法來阻止發送我的網站的所有 POST 請求並允許來自我的網站的所有 POST 請求。

我想出了以下內容:

RewriteEngine on
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{HTTP_HOST} !.*mydomain.com.*
RewriteRule ^.* - [F,L]

但由於某種原因它不起作用。有任何想法嗎?

謝謝!

如果您在 POST 期間尋找不是來自 mydomain.com 的人,那麼您想要的%{HTTP_REFERER}不是%{HTTP_HOST}. HTTP_HOST 是來自客戶端發出的 HTTP/1.1 請求的 Host: 標頭,如果機器人只是在訪問您的 IP 而無需查找您網站的主機名,這可能會很有用。有關使用範例,%{HTTP_REFERER}請查看有關“盜鏈”保護的論壇文章…從盜鏈保護範例中需要注意的一點是,您的 REFERER 檢查應包括 URL 的整個起始部分,否則有人可能會註冊“ mydomain. com asdfjkl.com ”或只是在他們的網站上設置一個頁面“example.com/mydomain.com.html”,其中任何一個都符合您目前的條件。

但實際上,Referer: 欄位很容易偽造,並且有許多人出於隱私原因禁用了 Referer,他們將不再能夠在您的網站上使用 POST 表單。它可能是一個很好的第一道防線,但如果您的目標是保護表單免受垃圾郵件機器人的侵害,您將需要做更多的事情。

如果您試圖保護用 PHP 或其他可以使用會話的語言編寫的表單,您可以通過在載入空白表單時在會話中設置一個標誌,然後在保存表單時刪除該標誌來擊敗一些機器人(如果未設置標誌,則拒絕表單)。這將要求機器人獲取會話 cookie,載入空白表單,然後按該順序最終保存表單。您將失去那些不信任您使用會話 cookie 的人,但您將獲得免受愚蠢機器人和人們在送出表單並重新送出後意外點擊重新載入的保護。

引用自:https://serverfault.com/questions/194709