Nov 14, 2010
ぽち*ろぐもスパム対策を
ぽちの Perl友のFacelessさんのブログ、TRPGオンラインセッション用ツールは如何ですか?では、最近海外のスパム業者に見つけられてしまったようでコメントスパムがたくさん投稿されているみたいです。これはぽちにも他人事ではありません。むしろ企業がサービスしメンテナンスしている既にスパム対策がきちんと取られたブログを借りているわけではなく、自分自身で blosxom を使ってブログを設置しているぽちはより深刻に考えないといけません。というわけで、まずは手始めに現在のぽち*ろぐのスパム対策状況を確認してみました。
ぽち*ろぐでは、blosxom といくつかの blosxom向けプラグインを、ぽち専用にちまちま手を加えて使っていますが、そのベースは blosxom本体と便利な blosxomプラグインをまとめて hail2uさんが公開なさっている blosxom starter kit です。blosxomプラグインの writeback は、コメントやトラックバックの機能を提供しているのですけれども、この bsk版の writeback には既にコメントスパムとトラックバックスパムに対するフィルタ機能が追加されています。
- 特定のURL以外のリファラを送信してきたコメントの投稿の拒否はデフォルトでOFF
- リファラを送信してきたTrackBackの拒否及びMozilla/で始まるUser Agent名を送信してきたTrackBackの拒否はデフォルトでOFF
- ASCIIのみのコメントまたはTrackBackの拒否はデフォルトでON
「hail2u.net - Weblog - blosxom starter kit #20」より
最初の二つはリファラやユーザエージェントを偽装されるとどうしようもありませんけども、大抵はこれで大丈夫な予感がします。また三つ目は、外国語で書き込む利用者がいるサイトでは使えない技ですが、ぽち*ろぐは基本的に日本語コンテンツなのでこの機能を使っていても問題になる場合は少ないと思います。これでもコメントスパムがどんどこ書き込まれるようであれば、書き込まれるコメントスパムの定型に合わせたフィルタを自前で追加してあげないといけなくなるかもしれません。挙句の果ては自前でベイジアンフィルタを書かなくてはいけなくなったりしたら面倒だなあ…、誰かもう書いてる人いないかなあ…。
とここまで書いたところで、同じ hail2uさんのサイトに apache の mod_rewrite でフィルタする記事を発見しました。フィルタを Perl で書いてブログ自体に実装するよりも、こっちの方が汎用的かもしれませんね。
RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} \.writeback$ RewriteCond %{HTTP_REFERER} !^http://hail2u.net/blog/.*\.html$ RewriteRule (.*) - [F,L]
こんな感じ(もちろんURLの部分は環境に合わせて書き換える必要があります)でいけると思います(未確認)。やっていることは、
- POSTでリクエストであるかどうか
- writeback flavourへのリクエストであるかどうか
- リファラがblogのpermalinkではないかどうか
ということになります。で、全てにマッチしたら403を返してやると。
「hail2u.net - Weblog - mod_rewriteでスパム対策」より
writeback message: