英語コメントスパムへの対処

今までコメントスパムの対処方法として『HTMLタグを徹底的に認めない』『禁止IPに登録されたのをわからなくする』、『MD5等を使ってコメント欄を偽装する(こちらは記事にしていません)』などを行ってきましたが、先日等々大量の英語スパムに見回れました。仕方がないので、英語スパムを駆除する方法を考えることにしました。

方法としては、日本語の文字が入っていないものをはじく方法を採用することにしました。特定の人が投稿できなくなる可能性があることに抵抗があったため、今までやらなかったのですが、とうとう諦めることにしました。

どうやらこの手の対策はプラグインでできるようですが、それらのプラグインはMovableType 3を要求しているようです。このサイトは未だにMovableType 2.661で運営されているので、動作するかわかりません。

そこで、いつものことながらソースをハックします。
Perlには日本語モジュールのJcodeというものがあり、それを使用してコメントに日本語が含まれているかどうか判断することができます。

use Jcode;
my $str_encoding = getcode($str);
すると$str_encodingに英語のみの場合は'ascii'が、日本語が含まれる場合は'UTF-8'等が代入されます。詳しくはJcodeのマニュアルをどうぞ。
そこで以下の改造をしました。

/path/to/MT/lib/MT/App/Comments.pm(MT2.661だと162行目付近)に追加

use Jcode;
my $comment_encoding = getcode($q->param('text'));
if ($comment_encoding eq 'ascii') {
    return $app->redirect($entry->permalink);
}

これで英語コメントを無条件にはじけます。

May 07, 2006 00:02 fenrir が投稿 : 固定リンク | | このエントリーを含むはてなブックマーク

コメント

通りがかりです。
こんなふうに、すぐ対策されてしまいますので、MT3への移行がおすすめです。。
http://mxg.s54.xrea.com/blog/archives/000244.html

Posted by: slightlyblue : May 7, 2006 06:01 PM

slightlyblueさん、コメントありがとうございます。
しかしMT3に移行してTypeKey認証を使うという方法はコメント投稿者が著しく制限されることになってしまうので、もう少し考えてからにしようと思います。

Posted by: fenrir : May 7, 2006 08:32 PM

MT3に移行して、TypeKey認証を使わない、という手があります..

MT3にもともと入っているプラグインにスパム除去フィルタがあって、それが強力なようですよ。

Posted by: slightlyblue : May 14, 2006 11:55 AM

slightlyblueさん、どうもです。
なるほど、そうなんですか。とりあえず今のところスパムの猛攻は収まっているようなので、再び曝されたらMT3への移行を検討してみようと思います。実は僕のMT2.661には至るところにパッチがあててあるので、それをMT3に反映するのが面倒というのがあるのですが…

Posted by: fenrir : May 15, 2006 12:41 AM

コメントする