そしてまた掲示板 SPAM 対策

NG ワード規制でほぼ 100% フィルタリングできてるんだけど、1日ウン十通の通知メールを受信すること自体うざいので、さらなる門前払い&再来防止の手はないものか。要求仕様は、ユーザー側の使い勝手をなるべく変えないこと(余計な手間をかけさせない)。プログラム側でセッション管理を行わないこと(1セッションごとに処理が完結する)。というわけでいくつかのアルゴリズムを考えて/調べてみた。

マシンパワー要求
Javascript で10秒ぐらいかかる計算をやらせて、答えが合ってないと投稿できないようにする方式。例としていくつかのサイトに載ってる素因数分解をやってみた。そしたら、あるサイトでは計算に5秒以上かかると IE が警告を出してきた。うーん、これじゃ使えないなぁ。でも別のサイトでは黙って延々と計算してた。あれれ? どっちみち Javascript を無効にしてる正当なユーザーのために代案が必要になるわけだが。
日本語画像コード
画像で示した漢字をテキストボックスに入力してもらう方式。毛唐除けにはなる。でも日本人や中国人のスパマーに狙われたらアウト。
投稿確認画面
自動投稿に対してはけっこう効果があるらしい。でもプログラム大改造じゃのう…。
せっかち規制
自動投稿を Apacheアクセスログで見ると、投稿フォームを GET して2〜6秒後に POST してる場合がほとんど。なので、6秒以内に投稿されたらカエレ!とか。
404を返す
NG ワードが含まれてたら 200 の代わりに 404 を返す方式。これで自動投稿の再来がかなり減ったという人がいる。試してみる価値はありそう。