1月17日

 ホームページに掲示板を設置していると、頭を悩ませるのがスパムな書き込み。アホな業者がロボットプログラムを使って自動的にあちこちの掲示板に詐欺出会い系サイトのアドレスなんかを書き込んでいるに違いない。管理不足なホームページなんかは掲示板がエロ書き込みで埋め尽くされていて、見ていて心を痛めるぐらいである。

 1、2年前に@niftyの掲示板サービスが廃止されて以来、掲示板は一番メジャーなlight.cgiを利用しているのだが、メジャーということはそういったロボットな書き込みに一番狙われやすいということでもある。

 フリーなcgiだけれど、スパムな書き込みを防ぐ機能として、ちゃんと投稿キーを打ち込まないと投稿できない仕掛けが作られている。画面に表示された4桁の数字を入力する場所があり、きちんと入力しないと投稿できない仕組み。4桁の数字は、テキストではなくて画像で表示されるから、ロボットな書き込み側としてはけっこうやっかいなはず。んが、最近は投稿キーを生成するロジックを見破ったのか、4桁のキーの数字の画像の表示から投稿キーを見破っているのか、どういう仕組みなのかは分からないけれど、とにかく投稿キーを設けてもスパム書き込みが相次ぐようになった。

 もう一つ仕掛けがあって、NGワードが設定できるようになっている。卑猥な言葉が投稿の中にあったら、投稿をはねのける仕組み。書き込まれた内容をもとに、なんでこんな言葉を打ち込まなきゃならないんだとなさけなく思いつつも、NGワードを設定したら、ずいぶんスパム書き込みが少なくなった。一時期はあるメールアドレス欄に同じアドレスを書き込む投稿が相次いだため、メールアドレス欄にもNGワードが設定できるようにcgiを改造して使っていた。しばらくは快適だった。

 ちょっと前まではスパムが1週間おきぐらいの頻度だったのだが、最近は2日に1度ぐらいに増加。どうも「もろ」な単語は避けてNGワードに引っかからないような書き込みに心がけているらしい。そんなエロ書き込みはある意味芸術的でもあるのだが、鬱陶しいことには変わりがないので、どうやったら防げるかを考えた。

 人間がいちいち書き込んでいるわけでないのなら、ちょこっとcgiを改造すれば、ロボットな書き込みは防げるに違いない。投稿キーが解析されているのであれば、そこをちょこっとだけ変えればロボットな投稿はなくなるに違いないと考えた。

 単純に考えて、プログラムが生成する投稿キーと違う数字を入力しなければ投稿できないようにすればスパムな投稿はなくなるのではないかと考えた。なので、簡単に、プログラムが生成した投稿キーから「1を引いた数」を入力すれば投稿できるようにプログラムと掲示板の表示を改造。4桁の投稿キーの最初のケタが「0」になってしまうと書き込めないバグ(投稿キーが0718だった場合、0717を入力してもエラーが出る)が出たので、プログラムが生成する数字を1から9に変更したら、うまいこといった。

 cgiを改造して3、4日たつけれど、今のところ、スパムな書き込みがなくなった。大成功。「投稿キーから1を引く」という今の対策も見破られたら、投稿キーを2倍してそこから2354を引いて、さらに3で割る、といった難しい条件を付けてみようかしら。

 そんなことをしたら、ただでさえ書き込みが少ないのに、まったく書き込みがなくなるに違いないけれど。