こんばんは、martinです。トラックバックスパム対策にて、trackback.phpをアップデートしたのですが、正規表現で不備があったので、その修正版をアップしておきます。変更点は、昨日のコメント
にもありますが、trackback.phpの56行目あたりを、
$jp_pattern = '{(
(?:¥xA4[¥xA1-¥xF3])+| # Hiragana
(?:¥xA5[¥xA1-¥xF6])+ # Katakana
)}x';
としています。最後にパイプ(|)が入っていたのですが、これだと、何でもすり抜けてしまいます。ほんとは、この正規表現の後に半角カタカナのやつも入れていたのですが、これは不要だろうと考えて削除して、その前のパイプが残ってしまいました。
あと、アクソン付きのアルファベット(フランス語)なんかも、たまにすり抜けるようですね。。これは、69行目を
if(preg_match('{^[¥x20-¥x7E[:alnum:]]+$}', $target)){
とでもしたら良いですかねぇ。他言語のときはイマイチ知識不足。。最初の修正を入れていれば、その時点でアクソン記号のやつも弾きそうな気はしますが、いかがなもんでしょう。
添付ファイル: trackback.php














Comments