TopMovable Typeカスタマイズコメントスパム > MT-SCode プラグインによるコメントスパム対策(その2:Typekeyサイン・インとの競合制御)
News
各種ブログテンプレート
2005年5月24日

エントリー本文

MT-SCode プラグインによるコメントスパム対策(その2:Typekeyサイン・インとの競合制御)

Posted at May 24,2005 8:03 PM
Category:[コメント, コメントスパム]
Tag:[, , , , , , ]

前回の記事では原文にもとづいたカスタマイズ(+公開テンプレートに合わせた修正)を行いましたが、そのままの状態では Typekey 認証を設定している場合、サイン・イン後もセキュリティコードの設定が要求されます。サイン・インを行った後は他の認証手段と併用しない方がコメンターにとってはありがたいと思われますので、今回はその部分の修正について紹介したいと思います。
カスタマイズの前に、前回の記事で MT-SCode プラグインの設定が全て完了していることが前提となります。

1.テンプレートの修正

管理メニューより個別エントリーアーカイブテンプレートを開き、前回の6項(または9項)で追加したセキュリティコード表示部分に対して、div タグおよび JavaScript を追加します。この追加によりサイン・イン状態を判定して、サイン・イン状態であればセキュリティコード入力エリアを表示しないようになります。
リストのように、セキュリティコード表示用タグに対して青色部分を追加してください。9項に追加するイメージで書いてますが、挿入箇所は6項も同様です。

<!-- Security Code Check -->
<div id="securitycode">
<p><label for="securityCode"> Security Code:</label><br />
<input type="hidden" id="code" name="code" value="<$MTSecurityCode$>" />
<input tabindex=3 id="scode" name="scode" />
<img border="0" src="<$MTCGIPath$><$MTSecurityImage$>?code=<$MTSecurityCode$>" style="vertical-align: middle; margin-top:-6px;" /><br />
手動で送信されたコメントであることを示すために、上のボックスに表示されている通りに数字を入力してください</p>
</div>
<!-- end of Security Code Check -->
 
<MTIfNonEmpty tag="MTTypeKeyToken">
<script language="javascript" type="text/javascript">
<!--
if (commenter_name) {
    document.getElementById('securitycode').style.display = 'none';
}
// -->
</script>
</MTIfNonEmpty>

なお前回の6項では、セキュリティコード表示の設定箇所が「TypeKey サイン・インを常に要求する場合」と「TypeKey サイン・インをしなくてもコメント可能な場合」の計2ヶ所あり、今回の修正は下方、つまり「TypeKey サイン・インをしなくてもコメント可能な場合」のコメント用フォームに対して実施します。文章ではわかりづらいので下に個別エントリーアーカイブテンプレートのタグの抜粋を示します。

<MTIfRegistrationRequired>
    <MTIfNonEmpty tag="MTTypeKeyToken">
            :
        TypeKey サイン・インを常に要求し、
        TypeKeyが設定されている場合の処理
        コメント用フォーム表示<MTElse>
            :
        TypeKey サイン・インを常に要求し、
        TypeKeyが設定されていない場合の処理(=環境設定誤り)
            :
    </MTElse>
    </MTIfNonEmpty>
<MTElse>
            :
    TypeKey サイン・インをしなくてもコメント可能な場合の処理
    コメント用フォーム表示</MTElse>
</MTIfRegistrationRequired>

ご覧の通り、赤色部分にコメントフォームが計2ヶ所あります。下にある方が今回の修正対象です。
どちらのコメント用フォームが使われるかは、管理メニューの「ウェブログの設定」→「設定」の「コメントの設定」欄にある「未登録の読者からのコメントを受けつける」のチェックボックスへのチェック有無で決まります。チェックされていなければ上のフォーム、チェックされていれば下のフォームが適用されます。
また、上のフォームは「未登録の読者からのコメントを受けつける」にチェックがついていない場合にしか使われないため、前回の説明で既にセキュリティコード表示が設定されている場合は Typekey 認証と競合するため削除してください(厳密に言うと、「未登録の読者からのコメントを受けつける」にチェックをされているのであれば、放っておいても構いません)。

2.Comments.pm の修正

ここでの修正は、cookie に保持されているサイン・イン状態を取得・判定して、サイン・インされていればセキュリティコードチェックを実施しない処理の追加です(1項で非表示にしてもセキュリティチェック自体は実施されるため)。
lib/MT/App/Comments.pm をダウンロードし、任意のエディタで開いて、前回の5項の設定に対して下記の青色部分を追加してください(8行ほど挿入した数行下に "}" の挿入がありますのでご注意ください)。

# SecurityCode hack start 
#
require MT::SCode;
my $code = $q->param('code');
my $scode = $q->param('scode');
my $sscode = MT::SCode::scode_get($code);
 
my $class = $ENV{MOD_PERL} ? 'Apache::Cookie' : 'CGI::Cookie';
eval "use $class;";
my $cookies = $class->fetch;
my $commenter_name = "";
if ($cookies && $cookies->{commenter_name} && $cookies->{commenter_name}->value()) {
    $commenter_name = MT::I18N::encode_text($cookies->{commenter_name}->value(),'utf-8',undef);
}
if (!$commenter_name) {
 
if ($scode ne $sscode) {
    return $app->handle_error($app->translate(
       "Wrong or missing Security Code."));
}
 
}
 
MT::SCode::scode_delete($code);
MT::SCode::scode_create($code);
#
# Security hack ends

3.Context.pm の修正

この項では、コメント・プレビュー/コメント・エラーページに対して、Typekey サイン・イン状態を判定して、サイン・イン状態であればセキュリティコード入力エリアを表示しないための修正です。
lib/MT/Template/Context.pm をダウンロードし、任意のエディタで開いて、前回の8項または10項で行った設定に対して青色部分を追加してください。

<!-- Security Code Check -->
<div id="securitycode">
<p><label for="securityCode">Security Code:</label><br />
<input type="hidden" id="code" name="code" value="$securitycode" />
<input tabindex=3 id="scode" name="scode" />
<img border="0" alt="Please enter the security code you see here" src="$path/mt-scode.cgi?code=$securitycode" style="vertical-align: middle; margin-top:-6px;" /><br />
<MT_TRANS phrase="Please enter the security code you see here."></p>
</div>
<!-- end of Security Code Check -->
HTML
        if ($rem_auth_token && $registration_allowed) {
        $result .= MT->translate_templatized(<<HTML);
<script language="javascript" type="text/javascript">
<!--
if (getCookie("commenter_name")) {
    document.getElementById('securitycode').style.display = 'none';
}
// -->
</script>
HTML
        }
        $result .= MT->translate_templatized(<<HTML);
Posted by yujiro ReTweet This!
関連記事
この記事を読んだ人はこんな記事も読んでいます
人気エントリー
Hatena Hot Entries
Hatena Entries
トラックバックURL


トラックバック

スパムとの戦いその後 from 倖 *Happiness Blog*
前々回スパムとの戦いにおいてTypekey認証されて居る場合はコメント投稿時にセ... [続きを読む]

Tracked on May 30, 2005 12:03 AM

mt-site.jsがない from ピヨログ
こないだから気になっていたコメント投稿欄の上に「TypeKey ID を使って サイン・... [続きを読む]

Tracked on December 3, 2005 9:08 PM

ブログスパム ~探検82日目~ from 裏情報探検
ブログスパム [続きを読む]

Tracked on December 26, 2005 11:28 AM
コメント

先日はご来訪有難う御座いました!
お陰様でTypekey認証時の競合を回避できました。
MT-SCode プラグインも効果を発揮しているのか、スパムコメントも回避出来て居るようです。
色々お手数をお掛けしました、これからも頑張ってくださいませ!

[1] Posted by NK Lastrose : May 30, 2005 1:47 AM

>NK Lastroseさん
こんばんは。
こちらの方も参照くださりありがとうございました。またトラックバックありがとうございます。
Typekey競合まで考慮した組み合わせはなかなかGOODだと思います。

こちらこそ今後ともよろしくお願い致します。

[2] Posted by yujiro : May 30, 2005 6:14 PM
コメントする
greeting

*必須



ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字 イタリック アンダーライン ハイパーリンク 引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

Now loading...
Introduction
Entry Trackbacks
スパムとの戦いその後
 [倖 *Happiness Blog*] 05/30 00:03
mt-site.jsがない
 [ピヨログ] 12/03 21:08
ブログスパム ~探検82日目~
 [裏情報探検] 12/26 11:28
Entries of this Category
Recent Entries
Recent Comments
Recent Trackbacks
QRcode

現在停止中です
携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

URI for cellular phones
ギターに入った猫
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner

loading ...
Categories
Monthly Archives
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
クリエイティブ・コモンズ・ライセンス
Powered by
Movable Type 5.02