コメントスパム対策3.1

まず書いておきましょう。
この対策で防げないコメントスパムがあるという点で、MovableTypeのコメント機能には、致命的な脆弱性がある、と言わざるを得ません。
(フォームからの入力でないコメントを受け取ってしまっているわけですから)

実際には、コメントスパムは

mt-comments.cgi

を特定の書式で直接叩くことでコメントを投稿してるらしいのですが、バージョンが上がっても、これに対しての対策方法がなにも出てこないのが疑問です。

TypeKeyという方法も確かにあるとは思いますが、コメントして頂く方全員にTypeKeyに登録して頂くというのも筋違いかと思いますし、TypeKeyの機能自体の安定度にも疑問を感じます。

と前置きしておいて、
3.0でも実施した、コメントスパム対策3.0の3.1版です。


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

という方法でコメントスパムロボットの攻撃をかわすわけですが、まず、


Individual Entry Archive

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

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

というのを投稿の「確認」のボタンの記述の直前に挿入する。
このタグ内で設定する name のパラメータを設置しているMovableTypeごとに個別の物にすることでコメントスパムの自動化が防げるのではないか、と思うのですが…。
他にもコメント入力欄がある場合は、そこにも記述が必要です。

んで、

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

に、このチェックボックスがチェックされているか判定するコードを挿入する。

3.1の場合は、245行の後に入れるとよさそうです。

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

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

246 my ($comment, $commenter) = _make_comment($app, $entry);
247 if (!$blog->allow_unreg_comments) {

TypeKeyで認証されている人はチェックしなくてもいいようにしたいところですが、相変わらず放置です。

コメント (2)

何がスゴイって、3.1にしたとたん無数のコメントスパムが(笑)。

3.121も変わってないので同じ手が使えます。

コメントを投稿

(コメントは、オーナーが承認するまで表示されません)

About

2004年11月29日 10:24に投稿されたエントリーのページです。

ひとつ前の投稿は「リムネットメールサーバー増強に伴う不具合」です。

次の投稿は「Google Desktop Search」です。

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

Powered by
Movable Type 3.35