y-matsui::weblog

電子楽器、音楽、コンピュータ、プログラミング、雑感。面倒くさいオヤジの独り言

 匿名掲示板の荒らし対策

過去、LotusDominoで構築した匿名掲示板が、「英語圏スパマーに荒らされてるから助けてー」という連絡が入った。
見てみると、すでに48もの宣伝らしき英文スパムが投稿されている。
削除してる傍から、ガシガシ書き込まれてるのが腹立たしい。
設計→投稿フォームを開き、対策を考える。
懐かしい、LotusScript及び@関数である。
ここは安直に、”投稿”ボタンで情報がPOSTされた後、サーバ側で保存時判定する処理を追加してみよう。
LotusDominoが持っているかっちょいい@関数”@Wide”を使ってみよう。
半角文字を全角変換する関数だ。(ちょっと他の言語ではお目にかかれない関数でしょ)

※言い訳ではないが、”迅速”そして”ローコスト”に対応するのはとっても大切なのである。

超簡単!で極悪な判定式が出来上がった。
名づけて”文化差別的掲示板荒らし対策”

@If(
@Left(Title;2)=@Wide(@Left(Title;2));@Do(
@PostedCommand([FileSave]);
@PostedCommand([FileCloseWindow]);
@URLOpen("許可の場合に飛ばすリダイレクト先URL")
);
@URLOpen("拒否の場合に飛ばすリダイレクト先URL")
)

登録されたタイトルの頭2文字をWide関数(全角に変換する)にかけて、元の文字列を比較する。
もし変換結果と変換元が同じであれば、元々全角文字で書かれているのでOK。
英語圏の(招かざる)スパマーさんが全角で投稿しない限りはこれで弾ける。
日本人のウェルカムなお客様が頭2文字に半角文字を使わないように、タイトル(全角)と注意事項を追加。
英語圏スパマーが全角文字を含むタイトルで登録したら→弾けない。
中国語や韓国語などのダブルバイトスパムならどうか→弾けない
日本語でも半角カナで投稿したら?→弾かない
日本語でも半角英数で投稿したら?→弾く

こんなんで良いんだろうか?
多分、拒否アドレスを蓄積して、保存時にブロックするのが正しいやり方なんだろうな。
※実際にそんなソフトウェアファイアウォール的なやり方でセキュリティを確保した例もある。

しかし、半角英数のタイトルを拒否するという極悪な方法によって、スパムが減れば良いのである。
そして多分、絶大な効果を得られるはずなのだな。ふっふっふっふ
※とりあえず、ピタリと止んだみたいだ。イカすぜ!
ほーーほっほっほっほ