ここ1ヶ月ほど「にが up BBS」へエロサイトの広告SPAMが毎日1件程度投稿されていた。エロ画像を添付してくるものもあったので、画像を認証しないと表示できないようにしたり、一時的に親スレを管理者のみの投稿にしてみたりしたが、一向に止む気配がない。
NGワードを設定して同じ投稿は二度と出来ないようにも対策はしていたが、NGワードに半角スペースを入れてきたり、似た文字に入れ替えたり、URLをキャラクターコード表記で書いてきたりと、敵も巧妙に網をすり抜けてくる。
たとえば「エロが」NGだとすると「エ□」に換えたり、URL項目で「niga」がNGワードなら「%6eiga」換えたり。URLはキャラクターコード表記でも半角文字と同じ扱いになるから、閲覧者がクリックすればまんまと敵のエロサイトに飛ばされてしまう。
これがロボットSPAMの仕業だとすると、キチンとエラーメッセージを読解してエラーを回避するプログラムが組み込まれているということになる。なかなかインテリジェントなやつだ。
投稿の頻度もなかなか考えられている。1日に大量に書き込まれるようなことになれば、管理人がBBSが閉鎖したり、他のcgiに変更したりという対策を取るであろうが、1日1回であれば、面倒くさくても削除の追いつく程度であり、積極的なSPAM対策をしない管理人も少なくないだろう。
ウチではしばらくの間いちいち削除&NGワード設定をしていたのだが、いい加減面倒くさくなってきたので本腰を入れることにした。まずUPP-BOARDがバージョンアップしていないか調べてみたが、残念ながらこのcgiは2002年以降更新されていない。SPAM対策のしっかりした他のcgiに乗り換えることも考えたが、過去ログをどうするかという問題もあるし、UPP-BOARDの使い勝手は気に入っているのでなるべく変えたくない。そこでUPP-BOARDのcgiを改造してCAPTCHA認証機能を付けることにした。投稿者には若干の面倒を強いることになるがエロSPAMを放置しておくわけにもいかないので致し方ないだろう。
CAPTCHA認証については、ここのサイトのプログラムを利用させていただいた。下に書いたようにUPP-BOARDのcgiに合わせてカスタマイズが必要。導入後数日経過を見ているが、広告SPAMはピタリと止んでいる。人力SPAMであれば突破してくるはずなので、やはりロボットSPAMの仕業だったようだ。
以下覚え書き。ウチと同じようにUPP-BOARDを使っているWEBマスターがいれば参考になると思う。
1.ダウンロードしたconkey.*の内容をBBSと同じ場所コピーして属性変更 |
image_gen.cgiとkeyinit.plは属性755として実行可能にする。
bg_gen.cgiは背景画像"bg.gif"を作製する時だけ使用するので、デフォルトのbg.gifでよい場合はコピー不要。
2.keyinit.plの編集 |
1)暗号化キーはデフォルトのままだと突破される恐れがあるので任意に書き換え
$crypt_key = 'xxxxxxxx'; |
2)フォントのパスはサーバーに合わせて変更(ウチの「vine Linux」では下記)
$font = '/usr/X11R6/lib/X11/fonts/TTF/luxirb.ttf'; |
3)確認キーチェックのサブルーチンの「&error」文字列をupb.cgiの仕様に合わせて「&er_」に書き換える
尚、私はデフォルトで設定されている「キーワード」をBBS上で表記されている「確認キー」に変更した
sub key_chk { |
4)確認キーの文字数、背景イメージ、フォント色、 フォントサイズのカスタマイズ
$len = '4'; |
3.upb.cgiの編集 |
1)冒頭に require './keyinit.pl'; を挿入。
require './jcode.pl'; |
2)スレコメントの削除キー入力の下に以下挿入。
/削除キー/<input type=password name="delkey" size=4 value="$c_key"$ff><br> |
3)ログ書き込みサブルーチンの冒頭に下記挿入
sub wri_ { |
4)フォームなどのデコードの項目に下記追加。
$mo =$FORM{"mo"}; |
5)フォームサブルーチンの冒頭に下記追加。
sub form { |
6)フォームの「送信する」ボタンの直前に下記挿入。
print <<"_KEY_"; |