まず書いておきましょう。
この対策で防げないコメントスパムがあるという点で、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にしたとたん無数のコメントスパムが(笑)。
投稿者: きりしま | 2004年11月29日 10:42
日時: 2004年11月29日 10:42
3.121も変わってないので同じ手が使えます。
投稿者: Kirishima | 2005年01月17日 22:46
日時: 2005年01月17日 22:46