ここで話を少し戻し、長文規制について補足したい。
普通、単に長文規制というと文字数制限になる。たとえば300字までというように制限するわけである。しかし荒らしもそう低能ばかりではないから、この規制の裏をかくやつも出現してくる。つまり文字制限に引っかからないように改行だけをするわけである。結果としては下図のように何も書かれていない書き込みが延々と続くハメになる。これは長文荒らしというより改行荒らしであろうが、こちらもなかなか厄介な荒らしである。

この改行荒らしを防ぐために改行数の制限、たとえば30行以内への制限のみを実施すると、今度は全然改行せずに非常に長い文章を書き込む荒らしが発生する。
つまり、長文規制の実効性を上げるには、(1)文字数の制限と(2)改行数の制限を同時に行わなければ意味がないのである。
そのための具体的なソースは以下のようになる。
<SCRIPT LANGUAGE="JavaScript">
<!--
var MAXLENGTH = 300; //入力可能文字数(この数字を制限数にする)
function mojiseigen(txt) {
var tmp = txt.body.value;
var len = tmp.replace(/[\n\r]/g," ");
var len = len.length;
if(len > MAXLENGTH) {
alert("ここへのカキコは "+MAXLENGTH+"字まで だす。\n\nヨロシク。");
} else {
txt.submit();
}
}
// -->
</script>
ここでのポイントは
var len = tmp.replace(/[\n\r]/g," ");
の行である。ここでは、改行をすべて半角スペース十数個に置き換える処理を行っている。つまり一回改行する毎に十数文字に換算され、ただ改行したのみで1文字も書かなかったとしても、約25行で打ち止めとなるわけである。これで改行荒らしを防ぐことが出来るというわけだ。
また、投稿ボタン部分のソースも前ページに記したように改造しておく。
<script language="JavaScript">
<!--
document.write("<INPUT TYPE='SUBMIT' VALUE=' 投稿する ' onclick='mojiseigen(this.form);
return false'> <INPUT TYPE='RESET' VALUE='クリア'>");
//-->
</script>
ここでのポイントは言うまでもないが
<INPUT TYPE='SUBMIT' VALUE=' 投稿する ' onclick='mojiseigen(this.form);
return false'>
の部分である。こう書いておけば、300字以上の書き込みをしようと投稿ボタンを押した瞬間、自動的に下図のように弾いてくれる。

ここまでの改造で長文・改行荒らしはほぼ防ぐことができるようになった。しかし、前述したようにimgboardは大きな2つめのセキュリティ・ホールを抱えている。次ページではその欠陥と対策について考えたい。
Before<<
>>Next