Movable Type 備忘録

 

 TypeKeyを使ったコメント・スパム対策

ネットサーフしていると、コメント・スパムに悩まされている人が多いですよね。

MovableType3.2になって、コメント・スパム、トラックバック・スパムの対策が強化されたと聞いています。
今回は、TypeKeyを使ったコメント・スパム対策について紹介したいと思います。

TypeKeyは、MovableType(ムーバブルタイプ)を入手する際に登録しましたね。
そのTypeKeyを入力して認証しないとコメントを投稿できないようにする…というのが、今回のコメント・スパム対策の方法です。

とはいっても、TypeKeyはすべての人が持っているものではありません。
当然、MovableType(ムーバブルタイプ)でブログ管理をしている人は持っていますけど。

ですので、コメントできる人が限られてしまうのが難点!? ですかね。

カスタマイズ方法

まず、TypeKeyトークンというコードを入手します。
管理画面から左サイドバーにある「設定」をクリックして、「コメント/トラックバック」タブをクリックしてください。

「認証サービスの設定」ボタンがありますので、そのボタンをクリックします。
ログイン名とパスワードは、TypeKeyを登録したときのものです。

ログインした画面下の方に、「TypeKeyトークン」とありますので、太字のコードをコピーします。
また、TypeKey認証させたいブログのURLも入力してください。

コピーしたTypeKeyトークンは、先ほどの「認証サービスの設定」の入力欄に貼り付けます。

次に、認証されたコメントしか受け付けないように設定します。
同じ画面内の各項目を以下のように設定します。

投稿を受け付ける条件:
「認証サービスで認証されたコメント投稿者のみ」を選択
メールアドレスの要求:
メールアドレスの入力を必須にしたい人はチェックします。
即時に公開するコメント:
「認証サービスで認証されたコメント投稿者のみ」を選択

以上で必要な環境は整いました。画面下の「変更を保存」ボタンをクリックして保存します。

次に、個別エントリー、コメント・プレビュー、コメント・エラーの各アーカイブで、以下のように差し替えます。

<MTIfRegistrationAllowed>
<script type="text/javascript">
  writeTypeKeyGreeting(commenter_name, <$MTEntryID$>);
  </script>
</MTIfRegistrationAllowed>
             ↓
<MTIfRegistrationAllowed>
<script language="javascript" type="text/javascript">
  <!--
  if (commenter_name) {
    document.write('サインインを確認しました。', commenter_name, 'さん。コメントお願いします。
    (<a href="<$MTRemoteSignOutLink static="1" encode_html="1"$>">サインアウト</a>)');
  } else {
    document.write('TypeKey IDを使って<a href="<$MTRemoteSignInLink
    static="1" encode_html="1"$>"> サインイン </a>してください。');
  }
  // -->
</MTIfRegistrationAllowed>

認証サービスを有効にすると、<MTIfRegistrationAllowed>~</MTIfRegistrationAllowed>の間が有効になります。

青い時の部分が元のJavaScriptです。
差し替えずに、このままでも TypeKey ID の入力を促すメッセージが表示されます。

基本的な動作は青い時の部分と同じですが、表示されるメッセージを自分好みで変更することができるようになります。

差し替えたら、いつものように各アーカイブの再構築します。

動作確認します。
TypeKey 入力せずにコメント投稿してみてください。エラーになりますね。

では、今度は TypeKey を使ってログインして、同じようにコメントしてみてください。
正しくコメントが受け付けられたならOKです。

以上で、TypeKeyによるコメント・スパム対策は完了です。

 Trackback Pings(0)

No trackbacks found.

 Comments(2)

#1: Posted by nishio [RES]

<MTIfRegistrationAllowed>
<script type="text/javascript">
writeTypeKeyGreeting(commenter_name, <$MTEntryID$>);
</script>
</MTIfRegistrationAllowed>

↑がエントリアーカイブにないのです…。こーいうときはどうすればよいのやら。

コメント確認のところにはあるのになあ。なぜかしら。

#2: Posted by bzbell Author Profile Page [RES]

>>1 nishio さん

mt.js という JavaScript があります。
MT は MT3.35 のままでしょうか!? それとも MT4!?

MT のインデックステンプレート内に mt.js のテンプレートがいますので、そちらを初期化して再構築してみてください。

 Post a Comment

コメント用フィード