近來有幾位自架blog站的blogger都先後受到spammer的留言攻擊﹐戰情慘烈﹐勝負也是一面倒——blogger們都被可惡的spammer掩沒了。

我早前也嚐過這種苦了﹐也試過被人停權﹐後來才發現﹐spammer基本上是不用實質“留言”來拖垮網站﹐只要連續去scan某個特殊檔案(在wordpress內的就是wp-trackback.php和wp-comments-post.php)﹐就足以令server load增加到一個不尋常的地步。

解決辦法試過好幾招﹐有效的包括﹕

  • 停用wp-trackback.php﹐或索性改檔案屬性﹐令檔案“消失”
  • 這個未必人人合用﹐但如受到trackback襲擊的話﹐這個就能100%令攻擊消失

  • Bad Behavior
  • 聽聞BB的功能是先截擊(相對起SK2等是先容許留言再檢視)﹐使spammer連php檔都觸不到。個人覺得效果 50/50 ﹐有機會殺錯良民。

  • 改.htaccess去強制阻截spammer

改.htaccess是一個蠻危險的手段﹐因為偶一不慎寫錯了的話﹐隨時連網站都連不上。以下是我早前因為trackback.php的追擊問題而找回來的.htaccess 改動方法。用法人人不同﹐最重要的是細讀自己網站的access log﹐找出spammer的特定模式再去阻截。例如我發現spammer通常假扮google, 利用POST的手段去讀取wp-trackback.php。因為基本上沒有理由google會用POST去讀wp-trackback.php(總不會是google想trackback我吧﹖﹕)﹐所以我就加入.htaccess內﹐有任何同樣的狀況就自動阻截﹐並回應對方Forbidden Error, 令對方以為這個檔案已經不存在。

RewriteEngine On
RewriteCond %{REQUEST_URI} wp-trackback\.php
RewriteCond %{REQUEST_METHOD} ^POST$
RewriteCond %{HTTP_REFERER} (google|freakycheats|psxtreme|chat-nett|terashells|victimlog|crescentarian|yelucie) [NC]
RewriteRule ^.*$ - [F]

RewriteCond %{HTTP_USER_AGENT} ^Crescent [OR]
RewriteCond %{HTTP_USER_AGENT} ^CherryPicker [OR]
RewriteCond %{HTTP_USER_AGENT} ^CherryPickerSE [OR]
RewriteCond %{HTTP_USER_AGENT} ^CherryPickerElite [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailCollector [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailSiphon [OR]
RewriteCond %{HTTP_USER_AGENT} ^EmailWolf [OR]
RewriteCond %{HTTP_USER_AGENT} ^ExtractorPro [OR]
RewriteCond %{HTTP_USER_AGENT} ^ia_archive [OR]
RewriteCond %{HTTP_USER_AGENT} ^ia_archiver [OR]
RewriteCond %{HTTP_USER_AGENT} ^Mozilla.*NEWT [OR]
RewriteCond %{HTTP_USER_AGENT} ^[Ww]eb[Bb]andit [OR]
RewriteCond %{HTTP_USER_AGENT} ^WebEMailExtrac.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^NICErsPRO [OR]
RewriteCond %{HTTP_USER_AGENT} ^Telesoft [OR]
RewriteCond %{HTTP_USER_AGENT} ^MSFrontPage [OR]
RewriteCond %{HTTP_USER_AGENT} ^TV33_Mercator [OR]
RewriteCond %{HTTP_USER_AGENT} ^MSIE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft.URL
RewriteRule ^.*$ - [F]

這些都是我自己土法解決spammer的攻擊﹐或許有更好的方法吧﹖有的話不妨留言分享一下。

伸延閱讀﹕http://gallery.menalto.com/node/8329

「關於垃圾留言/trackback」現有14則留言

  1. BB 只要稍作修改,不檢查 third-party blacklist 的話,殺錯良民的機會應該很少.

  2. 點解這個世界咁多無無聊人架?

  3. 問題解決了一半
    [...] 延伸閱讀: 香港仔公國:留言受襲 餘弦棧:可奈何?奈若何! 大雄網站:關於垃圾留言 Google網上論壇:Spam問題 Cat:  [...]

  4. @天佑﹐這個我有讀過你的文章﹐修改了BB﹐嘻嘻﹐所以希望沒有殺錯良民吧﹗ ﹕)

  5. @fresh, 奇怪吧﹖損人不利己的事﹐還真是有很多人在做呢﹗

  6. 標題, 是”關於”~ :)

  7. @sidekick, 哎也………….. >_< ~

  8. [...] 1 查看 | 收藏 在关掉Bad Behavior后,Akismet平均每天能拦截下六七十个spam,让人极其不爽。 所以又开始关注抵御spam的plugin和hack。最近香港的wordpress user提到的解决方法之一,使用.htaccess编辑rewrite规则,可将spam拒之门外。但使用到.htaccess,也注定这个方法具有一定的危险性,一不留神,可能是500报错。 在逛v2ex得到一个启发,得出一种抵御留言spam不错的方法,经过一天的试验,可以基本保证留言spam不再发生。但此方法只能抵御留言spam,不能抵御trackback和pingback。 原理就是spam留言机器人,是不会打开javascript的。所以如果你关闭了javascript将无法在冰古blog中留言了。 由下图可看到akismet收集到的spam都是trackback [...]

  9. 最近akismet成日失效, 每日都好多spam去咗moderation, 而且每日都會漏幾條spam, 好煩啊…

  10. @檸檬ed, 用Bad Behavior SK2, 效果唔錯架﹗

  11. trackback 基本能控制住,其他我暂时只能靠要求注册来阻止 :(

  12. @Antonio, Wordpress 還有幾款plug-in可以阻截spam, 不知你試過沒有? 如果不想用plugin, 也可以試試剛看到的.htaccess修改法來阻截垃圾留言

  13. 事在人為嘛. 不過, 大環境實在變得太快. 今天的標準可以是明日黃花!

  14. @mini storage, 都是用來參考罷了~

對不起,留言功能暫時關閉。