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対策済みの掲示板スクリプトっていくつか配布されてました。これ使えばよかったのかな(笑)

いちお、前のバージョンの掲示板が独自に改造してたこともあって、その改造コードを移植するよりはと思って自力で対策したんですけれど、先日掲示板を新しいバージョンにした時にどのみち改造コードの移植はやってしまったので、これははっきり言って無駄にコードを書いてしまったということになる。プログラマとしてはあまり感心できないことである。

書く前にちゃんと探しましょう(笑)
posted by Jack at 01:24| Comment(2) | TrackBack(0) | Web系 | 更新情報をチェックする
この記事へのコメント
とりあえず、探すより前に書きたくなるでしょ、病気かしら(笑)

あと、掲示板、覗いてないのでかなり適当だけど、
SubmitやめてButtonにしてOnClickにSubmit命令書いたら、
解析タイプを多少は防げたりはしない?

今、読んでてちょっと思いついただけでなんの確証もないけど(^-^;)
Posted by ありす at 2006年01月06日 09:18
いや、formタグと各inputの内容だけ読めばプログラムがsubmitするのに必要な情報は充分足りますよ。インターフェースが解ればいいわけですから。

そしてそのインターフェースは、ブラウザもまた送信のために必要とする情報(故に削れない)なのが頭の痛いところ。

複雑にJavaScriptで加工するって手もあるかもですが、それやると、JavaScript無効にしたいユーザも落としちゃいますからねぇ。

まあ、まさか本当に解析はしてないと思うのだけどね、たぶん。

私達の書くべきはまだこの世に存在しないコードです。誰かが書いたものがあれば、それでいいんです。
まあ、いい練習になるのでたまには書くのもいいんだけどね。基本姿勢としてはね。
Posted by Jack at 2006年01月07日 15:20
コメントを書く
コチラをクリックしてください

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。