自前で設置している掲示板「Kapokの掲示板」が英語のスパムで荒らされてしまいましたので、いくつかの対策をしました。
実施したスパム対策
いくつかのスパム対策を実施しました。
不適切な文字列を含む投稿を受け付けない
書き込まれたスパム投稿には、薬剤の名前を含むものが多くありました。具体的にはviagra、cialis、levitra等です。
スパム対策として、これらの文字列を含む投稿を受け付けないようにしました。私の掲示板の投稿フォームはphpで動いているのですが、phpで下記のように、本文中にviagraを含む場合はexitして、掲示板のMySQLのデータベースに入れないようにしました。
|
if (strpos($_GET["body"],"viagra") !== false) { echo "<p>不適切な文字列を含む投稿です。投稿内容を確認して再投稿して下さい。</p>"; exit; } |
strposは、引数1の中で引数2が最初に現れる位置を返す関数です。文字列が含まれなければfalseを返します。
参考:strpos関数(php)
複数の入力を必須とする
スパム投稿では意味不明なタグが1つのみついている投稿がすべてでした。
対策として、2つ以上の複数のタグ(半角スペース区切り)の入力を必須としました。
指定の文字列を含む投稿を受け付けないようにした時と同じく、phpのstrpos関数で、半角スペースが含まれる事を必須にしました。
|
if (strpos($_GET["tag"]," ") === false) { echo "<p>複数タグ(半角スペース区切り)で投稿して下さい。ボットによる投稿を避けるためです。ご協力下さい。</p>\ "; exit; } |
タグの複数指定は、ユーザーの使い勝手を大きく制限するため、一般的には不適切な対策だと思います。ただ、私の掲示板を使っているのはほとんど私1人なので、この対策を取ることにしました。
その他のスパム対策
今回私の掲示板では対策を実施しませんでしたが、他にもスパム対策の方法はいくつかあるようです。
- urlを変更する
- キーワードの入力を必須とする
- 日本語が含まれているかを確認する
対策概要:初心者でもできるスパム対策(spam measures)
今後もスパムが投稿されるようでしたら、これらの対策も実施していこうと思います。