Sponsored Link
iPod

コメントスパム対策

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 TAGTechnorati TAG

Trackback

Trackback URL(P)  
Title: wet vaginal ejaculation
Excerpt: free squirting female...
From:
Date: 2006.04.24
Title: best uncut guys
Excerpt: girls dildo party From:
Date: 2006.04.25
Title: suck on my cock
Excerpt: bukkake facial...
From: Site icon
Date: 2006.04.25
Title: natural boobs
Excerpt: huge boobs From:
Date: 2006.04.28