« Google Sitemaps(beta) ちょっぴり厳しく | メイン | ゴッゴルミニほぼ終了?! »

2005年06月21日

コメントスパム対策 MTHash編

[ Movable Type 関連 ]

さくらレンタルではサブドメインが設定できますのでサブドメイン取得しそちらで、もうひとつブログをはじめました。ちょっぴり使い分けたかったからです。

しかし、「コメント」の設定でつまづきました。
他のブログはコメントスパム対策に TypeKey を利用しています。しかし、サブドメインで完全に運用を行う場合サイン・イン後にコメント欄が出てきません。

ブログの設定で「アーカイブのURL」をメインのドメインのものにしてやるとちゃんとサイン・インできるのですが、それだと何の為のサブドメインか分かりません。。

コメントスパム対策は行っておきたいので色々探してみました。。てか、前に見つけていた、
MT-SCodeプラグインでスパム対策」 というエントリーからたどっていって、
スパム対策を強化(MTHash)
プレビューボタンのみ表示してhashを仕込むというコメントスパム対策
コメントスパム対策
そして「コメントスパム対策」 にたどり着いたわけです。

おおまかに言うと
●「プレビューにだけ認証キー(Hash)を仕込む」
●「仕込んでおいた認証キー(Hash)でコメント投稿可能にする」
このようなものです。。文字認証もかっこよさげですが、認証していることを感じさせない
この方法にしました。

ほぼ転記のようになってしまいますが自分の覚書として記載しておきます。

まず、MTHashをダウンロードしてMTの plugins ディレクトリーに入れておきます。
その際 salt.txt というのも同じところに作っておきます。salt.txt には適当な文字(半角英数字)を書いて入れておきます。
Forcing Comment Previews

/lib/MT/Template/Context.pm

if ($cookies && $cookies->{commenter_name} && $cookies->{commenter_name}->value()) {
$commenter_name = MT::I18N::encode_text($cookies->{commenter_name}->value(),'utf-8',undef);
}


if ($registration_allowed || $unregistered_allowed) {
$javascript = <<JAVASCRIPT;

の間に下記を追加。

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

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


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

の間に下記を追加。

<input type="hidden" name="validated" value="$comment_validated" />

/lib/MT/App/Comment.pm

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


my ($comment, $commenter) = _make_comment($app, $entry);
の間に下記を追加。

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."));
}

「確認」をしないと「プレビューしてください」とエラーがでて投稿出来なくなっています。
それを確かめたら、「個別エントリーテンプレ」の「投稿」ボタンを消します。

ひとつのMTで2つのブログをやっていますのでこちらのブログは TypeKey + MTHash です。ガチガチ?!ですかね。

投稿者 こてつ : 2005年06月21日 17:34

最近の検索テーマ - 旬?!ワード
outlook  移行  エクスポート  変換  outlook2003  バリカー  mov  データ移行  similar  アカウント  交換  悪性リンパ腫  婚姻届受理証明書  2003  ドアノブ  断り方  mii  楽天  wii  悪性リンパ腫とは  似顔絵  設定  ボラード  迷惑電話  メルマガ 


トラックバック

このエントリーのトラックバックURL:
(このブログへの記事紹介・リンクがない場合トラックバックできません。)

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

» スパム登録制限機能をYomi-Searchに from 縁にまつわるエトセトラ。。
またまた、PHP版ではなくてcgi版の改造。。改造といってもオフィシャルのサイト... [続きを読む]

トラックバック時刻: 2005年07月08日 17:49

» TypeKey IDは外して。。 from 縁にまつわるエトセトラ。。
こちらのブログでエントリーするのもかなり久しぶり(照 っていうか、かなりほったら... [続きを読む]

トラックバック時刻: 2006年08月12日 16:03

コメント

コメントしてください




保存しますか?


 
copyright (c) 2004-2005 Mercury Plan, Inc. All rights reserved.