コメントスパム対策~その2

MovableTypeを2.661にしてから初のコメントスパムのお越しです。ソッコーMovableType自信にBanned IPとして登録されていましたが、いくつかはやられてしまったわけです。

手動で入力しているかどうかを見分けるには、認証コードを入力してもらうのが一番なのですが、以前見つけたのだと、ちょっとその辺難しいみたいです。

そこで、

簡単SPAMコメント対策にて

「投稿の前にここをチェックしてください」

という方法でコメントスパムロボットの攻撃をかわすアイデアが紹介されていたので、自分の所にも猿まねしようかと。

で、

Comment Listing Template

Comment Preview Template

Individual Entry Archive

いうテンプレートにコメント入力欄を作っているので、

<input type="checkbox" id="spamprotect" name="spamprotect" /><label for="spamprotect">投稿前にここをチェックしてください</label>

というのを投稿のキャンセルの直前に挿入する。

Commment Error Template
は、正しく投稿されないときに、コメントエラーを出力するテンプレートで、
ここで修正しても投稿することができるようになっている。
あまりに親切なので、ここはバッサリ、このテンプレート内の投稿フォームはバッサリ削除する。
(<form>~</form>)んで、投稿し直してもらうように文章を変更。(不親切)

んで、

/MT/lib/MT/App/Comments.pm

に、このチェックボックスがチェックされているか判定するコードを挿入する。
2.661だと、だいぶソースが違うみたいで、IP Banのロジックが入っているので探しにくいが試しに、161行目に同じルーチンが登場するので、そこに挿入してみる。

if (!$q->param('text')) {
return $app->handle_error($app->translate("Comment text is required."));
}

# Spam protection added by chrome
if (!$q->param('spamprotect')) {
return $app->handle_error($app->translate("Please check the 'Spam Protection' checkbox."));
}

my $comment = MT::Comment->new;
$comment->ip($app->remote_ip);

こんな感じ。

About

2004年02月01日 11:55に投稿されたエントリーのページです。

ひとつ前の投稿は「Ghostzilla」です。

次の投稿は「投票ボタン」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35