« 東京都のネットオークション | メイン | 私は横浜市民 »

2004年08月16日

コメントスパム対策

コメントスパムで紹介した下記のコメントスパム対策を Movable Type 3.01D に適用する。

- Musings: Forcing Comment Previews
- Going My Way:プレビューボタンのみ表示してhashを仕込むというコメントスパム対策

3.01D では、コメントプレビューのフォーム画面の表示が、
テンプレートのHTML表記から、 Context.pm 内のソースコードによる表示に変更になっています。

そこで、下記のようにソースを変更してみた。

lib/MT/Template/Context.pm

1140行目

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 . "=";



1280行目

$result .= MT->translate_templatized(<<HTML);
<p><label for="url">URL:</label><br />
<input tabindex="3" type="text" name="url" id="url" value="$comment_url" />

<MT_TRANS phrase="Remember me?">
<input type="radio" id="remember" name="bakecookie"
onclick="rememberMe(this.form)" />
<label for="remember"><MT_TRANS phrase="Yes"></label>
<input type="radio" id="forget" name="bakecookie"
onclick="forgetMe(this.form)" value="Forget Info" style="margin-left:
15px;" />
<label for="forget"><MT_TRANS phrase="No"></label><br
style="clear: both;" /></p>

<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" />

<div align="center">
<input type="submit" name="preview" value="&nbsp;<MT_TRANS phrase="Preview">&nbsp;" />
<input style="font-weight: bold;" type="submit" name="post" value="&nbsp;<MT_TRANS phrase="Post">&nbsp;" />
</div>

</form>


lib/MT/Template/Comments.pm


1140行目

require MT::Blog;
my $blog = MT::Blog->load($entry->blog_id);

# At this point, the user info should be validated with perm to post.

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

require Digest::SHA1;
my $sha1 = Digest::SHA1->new;

# $sha1->add($q->param('text') . $q->param('entry_id') . $user_ip
# . $q->param('author') . $q->param('email') . $q->param('url') . $q->param('subject') . $q->param('convert_breaks') );

$sha1->add( $q->param('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(
"コメントスパム対策のため、「確認」ボタンを押してから、「投稿」してください。"));
}


投稿者 ken : 2004年08月16日 23:57

トラックバック

このエントリーのトラックバックURL:
http://blog.ohwada.jp/cgi-bin/mt-tb.cgi/131

このリストは、次のエントリーを参照しています: コメントスパム対策:

» コメントスパム対策 from Hitori-goto
再度。って感じなのですが。 まずは、テストです。 MTHashを使います。 Forcing Comment Previews at Musings... [続きを読む]

トラックバック時刻: 2004年11月28日 10:40

» コメントスパム from MT 3.x TestSite
「コメントスパム」の被害にとうとうあいました。 宣伝や意味の無い内容をコメント投... [続きを読む]

トラックバック時刻: 2005年01月21日 10:20

» コメントスパム対策2 from I sort my thought...
前はmt-comment.cgiをリネームするという方法でスパムを弾いていたのですが、最近は5〓10件/日でコメントスパムが来るようになったんで、コメントプレビ... [続きを読む]

トラックバック時刻: 2005年09月06日 00:58

コメント

コメントしてください




保存しますか?


コメントスパム対策のため、「確認」ボタンを押してから、「投稿」してください。