コメントスパム対策

先月実施したコメントスパム対策に問題発覚。

// コメントスパム対策の文字列チェック by YANO
define(ANSICHAR_STR,"/^[ -~]+$/");
function IsSpamMessage($string){
    // TABや改行を削除
    $string = mbereg_replace("[**\\**s]+", "", $string);
    // 全て半角ANSI文字なら1
    if (preg_match(ANSICHAR_STR, $string)) {
        return 1;
    }
    else{
        return 0;
    }
}

において、全体の文字種チェックを一発で行う為に改行やTABを削除していたmbereg_replace関数で、pattern文字列の****が重なってなかったのでTABが入っていたらチェックをパスしていた。

というバグでした。