/ / 最新

swk's log - コメントスパムと戦ってみる

2006-04-09

* コメントスパムと戦ってみる [logging]

結論から言うと,敗北です.

kuttukibbs に,できるだけ 簡単な修正を加えるだけでどこまでコメントスパムをブロックできるか試し てみた.

巷でよく行われているのは,「2 byte 文字がいっさい含まれていないもの は無条件で弾く」というもの.日本語サイトの場合,ほぼこれで問題無いわ けなのだけど,なんていうか,ほら,技術的に 負け って感じがする じゃないですか(ぉ.というわけでもう少しギリギリの所で戦えないかと試 してみたかったわけですよ.

戦略は以下の通り:

  • 投稿 form に hidden な input 要素を埋め込んでおく.これがが送られて来なかったら弾く
  • 投稿 form のページで cookie を配る.書き込みリクエストのときにこの cookie が一致しなかったら弾く
  • いかにもな NG ワードを弾く.いまのところ ringtone, casino, cialis, viagra が対象
  • 妙にテンションの高い書き出しを弾く.いまのところ /^(cool|very good|good|nice|great|excellent) (job|site|website|work)\W/i が対象

やってみるといずれもそれなりに有効で,そこそこ引っかかってくれる.最 初の hidden なタグを埋め込んどく程度の低レベルなやつでも,全く無力と いうわけではないみたい.

だけど,ある特定の記事 (具体的には [2006-03-07-2] なのだが) について は,これらをすり抜けて来る奴ら続出.強力なのにマトかけられちゃったっ ぽい.というわけで「この記事限定」で「2 byte 文字が含まれておらず, かつ URL らしき文字列で終わっているもの」はすべて弾くことにした.

一応これでいまのところ完全封殺.なのだけど,勝ち負けで言ったら敗北で すな.

Movable Type とかだと,いったん必ず Preview ページを表示して,そこで hidden なパラメータを配るなんて方法がよく使われているらしい.でも これも対策が取られるのは時間の問題かなという気もする.

結論:

  • 2 byte 文字の有無でのフィルタリングは,日本語サイトの場合,かなり最適に近い現実解っぽい
  • 真面目にやるならベイジアンフィルタでもかますのが正しそう
関連記事:
[2007-04-21-1] コメントスパム対策として,計算問題を入れてみた

最終更新時間: 2007-08-20 03:32


Shingo W. Kagami - swk(at)kagami.org