英語コメントスパムへの対処
今までコメントスパムの対処方法として『HTMLタグを徹底的に認めない』や『禁止IPに登録されたのをわからなくする』、『MD5等を使ってコメント欄を偽装する(こちらは記事にしていません)』などを行ってきましたが、先日等々大量の英語スパムに見回れました。仕方がないので、英語スパムを駆除する方法を考えることにしました。
方法としては、日本語の文字が入っていないものをはじく方法を採用することにしました。特定の人が投稿できなくなる可能性があることに抵抗があったため、今までやらなかったのですが、とうとう諦めることにしました。
どうやらこの手の対策はプラグインでできるようですが、それらのプラグインはMovableType 3を要求しているようです。このサイトは未だにMovableType 2.661で運営されているので、動作するかわかりません。
そこで、いつものことながらソースをハックします。
Perlには日本語モジュールのJcodeというものがあり、それを使用してコメントに日本語が含まれているかどうか判断することができます。
my $str_encoding = getcode($str);
そこで以下の改造をしました。
/path/to/MT/lib/MT/App/Comments.pm(MT2.661だと162行目付近)に追加
my $comment_encoding = getcode($q->param('text'));
if ($comment_encoding eq 'ascii') {
return $app->redirect($entry->permalink);
}
これで英語コメントを無条件にはじけます。
コメント
slightlyblueさん、コメントありがとうございます。
しかしMT3に移行してTypeKey認証を使うという方法はコメント投稿者が著しく制限されることになってしまうので、もう少し考えてからにしようと思います。
MT3に移行して、TypeKey認証を使わない、という手があります..
MT3にもともと入っているプラグインにスパム除去フィルタがあって、それが強力なようですよ。
Posted by: slightlyblue : May 14, 2006 11:55 AMslightlyblueさん、どうもです。
なるほど、そうなんですか。とりあえず今のところスパムの猛攻は収まっているようなので、再び曝されたらMT3への移行を検討してみようと思います。実は僕のMT2.661には至るところにパッチがあててあるので、それをMT3に反映するのが面倒というのがあるのですが…
コメントする
- 匿名でのコメントは受け付けておりません。
- お名前(ハンドル名可)とメールアドレスは必ず入力してください。
- メールアドレスを表示されたくないときはURLも必ず記入してください。
- コメント欄でHTMLタグは使用できません。
- コメント本文に日本語(全角文字)がある程度多く含まれている必要があります。
- コメント欄内のURLと思われる文字列は自動的にリンクに変換されます。
- 投稿ボタンを押してエラーがでなければ、投稿は成功しています。反映されるまでには少し時間がかかります。
通りがかりです。
Posted by: slightlyblue : May 7, 2006 06:01 PMこんなふうに、すぐ対策されてしまいますので、MT3への移行がおすすめです。。
http://mxg.s54.xrea.com/blog/archives/000244.html