今日は会社が休みなのですが、昼過ぎに起きて掲示板見たら、SPAMの大量爆撃くらって一ページ目から人間の書き込みが完全に追い出されている事態に遭遇しました。
さすがにちょっと頭に来たので、久しぶりに対策取りました。
今回採用したのは
「入力してはいけないフィールドを用意する」
という一見よくわかんない方法です。
掲示板を開くと、入力フォームの下のほうに「ここは入力しないでください」というテキストフィールドがあります。ここに入力されると投稿を受け付けません。
そして、ソースを見るとわかりますが、このフィールドの名前が「mail」になってるんですね。動的にフォームを解析したSPAMエンジン(っていうのか?)は、ここをメールアドレス入力欄だと解釈して値を設定するわけです。本物のメールアドレス入力欄はぐちゃぐちゃな文字列で名前つけてます。
たぶん、こいつでまた当分は平和になれます。
これで実に4通りものチェック処理が追加されてしまいました
A.パラメータが不正なもの
うちの掲示板の元になったスクリプトの入力パラメータを固定的に投げてくるものに対応する。
B.大量のURLを含むもの
6個以上に設定、数百以上URLを含んだ書き込みがよくあるので、これがないと掲示板が使い物にならなかった。
C.タイトルなし、または「None」の禁止
たまたま多かったタイプにこういう書き込みがあったからで、これが一番その場しのぎな対処だったかも、けっこう効果はあったけど。
D.入力禁止フィールド(偽メール入力欄)の追加
今回やった奴です、本当はこのチェックだけでABCのほとんど全てをカバーできるはずですが、なんとなくタイプ別にログとっているので、他のチェックも残して、このチェックを一番最後に回しています。
ちなみに、今さっきDの対策を行ってから、この記事を書いている間にもうタイプA、B、Dそれぞれに一件ずつ引っかかっています。
・・・これじゃ、掲示板なんてもう、まともに使えないんじゃないだろうか・・・最近はメールも、以前のようにメールアドレス公開するとまともに使えない(週に数回だけ家に帰る私は帰るたびに数百通のSPAMを受信するハメになる、いくらフィルタがあっても苦痛だ)し、なんていうか、ネットワークはSPAMに押し潰されつつあるような、そんな気がしてならない。
まあ、もうしばらくたったらログ集計してそれぞれの件数でも数えてみたりするかー。

