コメントスパム対策
2004.12.07.11:07 PM [ MovableType ]
大量にくる訳ではないんですが、ウザいコメントスパム。巷には色々なコメントスパム対策が紹介されていて、自分でも参考にしてチマチマと対策を講じてはいるのですが、どうもいたちごっこのような気もします。
で、「プレビューボタンのみ表示してhashを仕込むというコメントスパム対策」というのが、なんとなくいいんじゃないかな〜と思ったのを今回導入してみました。
Hitori-gotoさんのほうはMT 3.11-ja用ということで、こちらを参考にやってみました。
まず、MTHashをダウンロードしてmtのpluginsディレクトリーに入れておきます。その際salt.txtというのも同じところに作っておきます。salt.txtには適当な文字(半角英数字)を書いておきます。
次にMTの管理画面からコメントプレビュー用のテンプレートを開きformタグの中に下記のhidden属性を入れておきます。
<input type="hidden" name="validated"
value="<MTSHA1SaltHash><MTCommentPreviewBody convert_breaks='0'>
<$MTEntryID$><MTCommentPreviewIP>
<$MTCommentPreviewAuthor$>
<$MTCommentPreviewEmail$><$MTCommentPreviewURL$>
</MTSHA1SaltHash>"/>
mt/lib/MT/Template/Context.pm
1200行目過ぎくらい。
if ($cookies && $cookies->{commenter_name} && $cookies->{commenter_name}->value()) { $commenter_name = MT::I18N::encode_text($cookies->{commenter_name}->value(),'utf-8',undef);
}
の次から下記を加えます。
require Digest::SHA1;
my $sha1 = Digest::SHA1->new;
$sha1->add( $entry_id . $ENV{'REMOTE_ADDR'} );
my $salt_file = MT::ConfigMgr->instance->PluginPath .'/salt.txt';
my $FH;
open($FH, $salt_file) or die "cannot open file <$salt_file> ($!)";
$sha1->addfile($FH);
close $FH;
my $comment_validated = $sha1->b64digest . "=";
次に1300行目過ぎくらい。
<p><label for="text"><MT_TRANS phrase="Comments:"></label> $allow_comment_html_note<br />
<textarea tabindex="4" name="text" rows="10" cols="50" id="text">$comment_text</textarea></p>
の次から下記を加えます。
<input type="hidden" name="validated" value="$comment_validated" />
mt/lib/MT/App/Comment.pm
250行目付近。
if (!$q->param('text')) {
return $app->handle_error($app->translate("Comment text is required."));
}
の次から下記を加えます。
require Digest::SHA1;
my $sha1 = Digest::SHA1->new;
$sha1->add( $entry_id . $ENV{'REMOTE_ADDR'} );
my $salt_file = MT::ConfigMgr->instance->PluginPath .'/salt.txt';
my $FH;
open($FH, $salt_file) or die "cannot open file <$salt_file> ($!)";
$sha1->addfile($FH);
close $FH;
my $digest = $sha1->b64digest . "=";
if ($q->param('validated') ne $digest) {
return $app->handle_error($app->translate(
"Please preview your modified entry before posting it."));
}
Previewをしないと投稿出来なくなっているのを確認して、Individual Archives Templete(Comment Listing Templateも)の</form>の次に、
※コメントスパム対策のため、プレビュー後、投稿願います。と追加して、Postボタンを削除します。
文字コードのせいかわかりませんが、エラーでまくりでしたがなんとか導入できました。効果のほどはまだわかりませんが、これでしばらく様子をみてみようと思います。
[2005.2.4 追記]
上記のコメントスパム対策ですが、色々とエラーが出てします為(私の設置方法がよくないのでしょうが)やめました。かわりにMT-Blacklistを設置しました。
Technorati TAG
Trackback
Excerpt: girls dildo party From:
Date: 2006.04.25
Excerpt: bukkake facial...
From:
Date: 2006.04.25
Excerpt: huge boobs From:
Date: 2006.04.28






Excerpt: free squirting female...
From:
Date: 2006.04.24