mod_rewriteでスパム対策

blosxomでのスパム対策は自分で考えたものも含め、いくつか紹介してきたわけですが、どれもwritebackプラグインに対策コードを追加という形を取っているので、blosxom本体が呼ばれまくるというのは避けられないものです。現に、ここ4日ほどランダムプロクシ経由で爆撃(1000近い)受け、ちょっと精神的によろしくない感じでした(全部撃墜できたので、さほど気にすることはないとは思うのですが)。そこで思い出したのが、mod_rewriteによるスパム対策です。

スパム対策をいろいろ探し回っていた時に見つけた、kasia in a nutshellComment spam and mod_rewriteというエントリが元ネタです。これはMovable Typeでの話ですが、仕組み自体はさほど変わらない(特定のURLにPOSTするだけ)ので、自分の環境に合わせて書き直してみたり。

RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} \.writeback$
RewriteCond %{HTTP_REFERER} !^http://hail2u.net/blog/.*\.html$
RewriteRule (.*) - [F,L]

こんな感じ(もちろんURLの部分は環境に合わせて書き換える必要があります)でいけると思います(未確認)。やっていることは、

ということになります。で、全てにマッチしたら403を返してやると。

結局はリファラのチェックに過ぎないので、リファラを詐称されたら防げないですが、経験上はそこまで頑張ったスパムはあまり無いと思うので、結構コレで潰せそうです。この場合はblosxom本体は呼ばれないので、CGIによる負荷が下がることになります(mod_rewriteによる負荷は当然上がりますが)。