ィワタマ|SiDE-b :: RBL(DNSBL)でコメント・スパムをブロックする

 [ィワタマ]  [ィワタマ|SiDE-b]

カテゴリ
全て
過去ログ
SiDE-b内検索
最近のコメント
 [←前の話題:想像してみよう、DRMの無い世界を…]   [→次の話題:Vieux Farka Touré「Ana」リミックス・コンテスト] 
RBL(DNSBL)でコメント・スパムをブロックする (2007/02/11) << Web >>

一部お気付きの方もいるだろうが、 ここ最近執拗なコメント・スパムに襲われるようになった。 そこで、いわゆるRBL(DNSBL)を使って本格的にスパム対策をすることにした。

RBL(DNSBL)は元々はスパム・メール対策用のものだが、 基本的な仕組みはDNSを使ったものなので、メール以外のCGIなどでも簡単に利用できる。 そのあたりの話は、 BBS/コメント/トラックバックspam対策[http://www.rbl.jp/bbstbspam.html] が、サンプル・スクリプトもあって、参考になる。

さて、一口にRBL(DNSBL)と言っても、IPベースの物と、URIベースの物の2種類がある。

IPベースの物(こちらが一般的)としては、 DSBL.org[http://dsbl.org/]SpamCop.net[http://www.spamcop.net/]RBL.jp[http://www.rbl.jp/] などがある。 スパムの送信元IPアドレスで判定するもので、 例えばIPアドレス「10.20.30.40」からPOSTされたコメントの場合は、 それぞれ次のような問い合わせをすればよい。 ([IPアドレスの逆順].[RBLのアドレス]という形式)

$ nslookup 40.30.20.10.list.dsbl.org
$ nslookup 40.30.20.10.bl.spamcop.net
$ nslookup 40.30.20.10.all.rbl.jp

URIベースの物としては、 SURBL[http://www.surbl.org/]URIBL.com[http://www.uribl.com/]RBL.jp[http://www.rbl.jp/](IP/URI両方ある) などがある。 こちらはコメント等の内容に書かれたURIのドメイン名で判定する。 例えばコメントに「http://spam.example.com/spam.html」のようなURIが書いてあった場合、それぞれ次のような問い合わせをすれば良い。 ([ドメイン名].[RBLのアドレス]という形式)

$ nslookup example.com.multi.surbl.org
$ nslookup example.com.list.uribl.com
$ nslookup example.com.url.rbl.jp

いずれの場合も、上のような問い合わせの結果、 127.x.x.xのアドレスが返ってきた場合はスパム、というわけ。 C/perl/PHPなどでは、gethostbyname関数を使えば簡単に実装できる。

そんなわけで、RBL(DNSBL)でスパムをブロックするblosxom用のプラグインrbl_spamblockをざっくりと作ってみた。 (ファイル名の先頭に0を付けたのは、プラグインの中で一番最初に動作させるため。) ただ、それでもまだすり抜けてくるスパムもあるので、 1コメント中のURIの最大数を設定して、それ以上のURIが書かれたコメントもブロックするようにした。 今後もちょくちょく機能は調整するかも。

[コメント]




 [←前の話題:想像してみよう、DRMの無い世界を…]   [→次の話題:Vieux Farka Touré「Ana」リミックス・コンテスト] 

 [ィワタマ]  [ィワタマ|SiDE-b]