Blogの別館として、プログラマーJackのプログラマー視点なお話のblogです。2006年01月06日さて、一日経過してどうなったか?昨日の掲示板SPAM対策のログを調べてみた。俺を一番悩ませていた「色んなURLを大量書き込みしてくるやつ」が4件ほど釣れました。全てがURL書き込み件数のチェックで引っかかってます。URLの書き込み件数超過チェックに引っかかるってことは、もう一つ仕掛けた「パラメータの変更」は突破しているということで、まさか人力か、そうでなければHTMLのフォームをわざわざ解析して送信している(解析したって限界があるから、これをわざわざやるとは考えにくい)可能性がある。具体的に変更したパラメータというのは、うちの掲示板に使っているyy-boardの「mode」というパラメータの値である。この手の掲示板cgiというのは、ひとつのcgiで記事閲覧から書き込み、さらには記事削除と様々な処理を行うケースが多いので、この「mode」のように何らかの形で処理モードを渡して処理を切り替えているものが多い。今回やったのは、書き込み時に設定される処理モード「regist」を別の文字列に書き換え、それまでの「regist」では書き込みが行われないようにした、という対処方法である。ほとんどの場合の書き込み自動化プログラムは相手のCGIの仕組みに合わせて固定的に作られる(はず)ので、yy-boardが相手なら書き込み時には「mode=regist」の値を送信するように作るはずである。これでネット上にあるyy-boardのほとんど全てには書き込めるはずで、今回のSpammerのような悪意のあるプログラムでなく、単純に掲示板のビューアとして動作するソフトウェアなんかも存在する。この固定的なアプローチが通用しない場合、書き込みの自動化は非常に難しい。HTMLで書かれたフォームの意味を動的に解釈することなど(あてずっぽうでもなければ)不可能だからだ。厳密に言えば、今回変更したのは「mode」というパラメータ名ではなく「mode=regist」として表現される「regist」という値だ、という点が対策としては若干手抜きと言える、yy-boardというプログラムのルールにおいては「mode」は処理モードなので、正規の投稿フォーム画面を読めば書き込み画面が「mode」に何を設定しているかはある程度は解釈可能である。そんなことをやるメリットが思いつかない、そんな乱暴な対策を取るサイトがそんなにたくさんあるとは思えないからだ。なると他にこの対策を突破する方法は「人力書き込み」という最強の方法がある、制限しきれない様々なIPアドレスからアクセスされれば正規ユーザとなんの区別もつけられないからこのレベルでは対策しようがない。それはふつーに考えてやらないよな・・・そりゃ、物価の安いどこかの国ならn件で10円とかでも喜んでやる人達がいるかも・・・とか恐い想像もできなくはないけど、それは恐いから想像したくない(笑)というわけで、一体どうしてあの対策を突破してくるのかいまいち解らないのだが、突破してくるやつに対してはURL書き込み件数のチェックで弾けているので当面は問題ない。パラメータの変更によって弾いた例は現段階ではまだログに出ていないが、これも近いうちに出てくるんじゃないかなーと思う。ところで、今回探してみたら、SPAM対策済みの掲示板スクリプトっていくつか配布されてました。これ使えばよかったのかな(笑)いちお、前のバージョンの掲示板が独自に改造してたこともあって、その改造コードを移植するよりはと思って自力で対策したんですけれど、先日掲示板を新しいバージョンにした時にどのみち改造コードの移植はやってしまったので、これははっきり言って無駄にコードを書いてしまったということになる。プログラマとしてはあまり感心できないことである。2.0Seesaaブログ広告この広告は60日以上更新がないブログに表示がされております。以下のいずれかの方法で非表示にすることが可能です。「広告を表示しない」にチェックを入れて保存する。ブログ×この広告は180日以上新しい記事の投稿がないブログに表示されております。