[ Text Top ]

あぷろだ荒らしへの一方策

掲示板は有用であるとともに、楽しいコミュニケーションツールでもある。しかしあらゆるものに光と影があるように、掲示板にも「荒らし」という影の部分がある。
その中でもあぷろだは、画像を中心としたファイルをアップロードし表示させることが出来るだけに、もっとも荒らしに対し脆弱なタイプの掲示板である。
ここでは最も普及しているあぷろだの一つimgboardに例をとり、あぷろだ荒らしとその対策について、ほんのささやかではあるが考察してみたい。

さて、荒らしの常套的な手法にはいくつかある。例を挙げれば

(1)連続投稿、(2)長文投稿、(3)グロなどの不快な画像を貼る

などの手口である。
無論CGIの作者も荒らされることを防止するため、いくつかの対策は打ってはいる。ただ、上記の手口のうち(3)の不快画像貼りをCGIのプログラム的に弾くことは、今のところ不可能である。ある画像がグロなどの不快なものであるか否か、残念ながら現在のコンピュータには判断出来ないからである。
そういったタイプの荒らしをする人間は、その投稿者のIPなどを特定し弾くなどといった別の手段をとらねばならない。これがいわゆる「アク禁」である。しかし、その対策をとると、次はプロキシサーバを通してIPを偽装するという抜け道を考え出してくる。それに対して今度はプロキシ弾きをするといった再対策などをやっていると、いたちごっこになってキリがない。この荒らしに対する防御策は別の機会に考えたい。

さて、あぷろだの中でもimgboardはなかなか良くできたあぷろだなのだが、俺様の知る限り少なくとも2つ、大きなセキュリティ・ホールがある。
まず一つ目は、添付ファイルにはちゃんとサイズの制限があるにもかかわらず、テキストの投稿量には特に制限が設けられていないことである。
つまり、ちょっと信じがたいことなのだが、どんなに長い文章であろうと投稿できてしまうという欠陥があるのだ。
このままでは長文荒らしにとっては絶好のターゲットとなってしまう。
実際、ぱーふぇくちにおいてもかなりの頻度で長文荒らしが出現している。

長文荒らしの例   アスキーアート荒らしの例

これらの荒らしを防ぐにはCGI的なものとJavaScriptを使う方法の二つがある。
それぞれに長所と欠点があるが、俺様はJavaScriptを使う方法を採用することにした。
その理由だが、CGIで長文荒らし対策を打つと、長文投稿した後「投稿量が大きすぎます」というエラーメッセージのページへ移動する。



そこで「もどる」あるいはブラウザの「戻る」を使って戻ると、折角の投稿がかき消すように消えてしまうことがあるのだ。荒らしならそうなっても自業自得だろうが、何気なく長すぎる文章を書き、制限に引っかかった結果がこれではたまらない。

これに比べ、JavaScriptで長文対策をとったならば、「投稿する」ボタンを押した瞬間に「文章が長すぎます」というアラートダイアログが出るから、書き直すのに都合がよい。

ただ、JavaScriptで防御策を採ると、必ずJavaScriptをOFFにしてから再度荒らす輩が出現する。まったく悪知恵のあるバカには困ったものである。こういう連中に対しては<noscript>タグを使い対抗するのが一般的である。すなわち、

<noscript>
<meta HTTP-EQUIV="Refresh" CONTENT="0; URL=飛ばしたいURL">
</noscript>


というように書いて防ぐわけである。こうすればJavaScriptをOFFにしていると即座に別のページに飛ばされる。これでJavaScript OFFに対してはかなり万全に近くなる。
しかし、この場合は別の問題が発生してしまう。
その問題点とは、JavaScriptをOFFにするのは、必ずしも荒らしだけではないという点である。セキュリティ意識が高いためにJavaScriptをOFFにしている人間も少なからず存在する。そういう悪意のない訪問者も、荒らしと一緒に別ページに飛ばしてしまうという問題が新たに発生してしまうのだ。

これを解消するには発想の転換が必要となる。
上記の対策では、JavaScriptをOFFにしていると他のページへ飛ばしていた。つまりあぷろだを見ること自体を禁じているわけである。しかし、実際のところ、見ているだけの人間は一切害を及ぼさない。害を及ぼすのは悪意のある書き込みを行う人間のみである。
つまり、JavaScriptをOFFにしている人間に対し禁じるべきなのは、見ることではなく書き込むことなのである。
そこまで考えが至れば答えは見えてくる。
すなわち、JavaScriptをOFFにしていると投稿できないようにすれば良いのである。
具体的には、下記のソースのように、投稿ボタンをJavaScriptのdocument.writeメソッドで作成すれば良い。

<script language="JavaScript">
<!--
document.write("<INPUT TYPE='SUBMIT' VALUE=' 投稿する ' onclick='mojiseigen(this.form); return false'> <INPUT TYPE='RESET' VALUE='クリア'>");
//-->
</script>

<noscript>
<B><font color=#FF0000 size=-1>JavaScriptがOFFの場合、投稿不可。</font></B>
</noscript>

こうしておくと、JavaScriptをOFFにすれば下図のように投稿ボタン自体が消えてしまう。従ってどうやっても投稿することができなくなるわけである。

投稿したければJavaScriptを0Nにせざるを得ないが、0Nにすると長文規制が効いてくる。これで完璧に近い対策が採れるわけである。
さて、次ページは長文規制を実施するためのJavaScriptの概要である。

>>Next

| Text Top  | bbs  |