[MT]Movable TypeにCAPTCHAによる認証機能を付けてみた。

さて、最近またブログへのコメントスパムが増えてきたので困っていました。.htaccessでdenyするのにも最近はコメントスパムをbot netから膨大数の複数のIPアドレスで書き込んでくるのでちょっと限界があります。日本のIPアドレスからだけ書き込めるようにしちゃえばかなり効果はあると思うんですが、それもなんか鎖国的な感じで嫌なのでどうしようかなと考えていました。(グローバルに行きたいw(・ω・)ノ)日本はしばらく鎖国してもいいと思うけどw。

そういえばコメント投稿時に投稿キーを入力してコメント投稿するようなプラグインがあったよなーと思って探してみたのですがなかなか見つかりませんでしたが、いろいろ検索しながら調べてみると、Movable Type 4.0からCAPTCHA機能が標準搭載になっている事が判りました。何だって∑(・ω・;)

なみにCAPTCHAっていうのはこういう奴です。表示された画像にかかれている文字をコメントの投稿時に書き込む奴です。最近はかなりいろんなところで使われているので見れば知らない人はほとんどいないと思います。

CAPTCHA

 

さっそく我ブログにも導入することにしたのですが、色々ハマッタので書いておきます。誰かの参考になればと思います。今現在、このブログのMTのバージョンは4.1です。

参考にさせていただいたのは下記のブログです。

Movable Type 4 の CAPTCHA 認証使ってみる – Movable Type 備忘録
<http://bizcaz.com/archives/2007/08/19-213853.php>

●CAPTCHA認証の設定方法

1.コメントの設定画面に行きます。

ダッシュボード>ブログの設定>コメント

と画面を遷移します。

ダッシュボード>ブログの設定>コメント

 

2.CAPTCHAプロバイダの設定を行います。

コメントの画面の下の方に[CAPTCHAプロバイダ]という項目があるので[Movable Type 既定]を選択します。この機能を使うにはMTがインストールされているサーバーにグラフィックライブラリとしてImageMagickがインストールされている必要が有ります。最近は入ってない方が少ないともいます。あとmt-staticフォルダをmt-config.cgiと違うフォルダにおいている場合、mt-config.cgiで[CaptchaSourceImageBase]を指定してあげないと、ImageMagickがインストールされてないとかエラーが表示されたりするので注意です。

エラーが表示される場合は、以下の様にmt-config.cgiでパスを指定してあげると直るかもです。

CaptchaSourceImageBase /home/xxx/xxx/xxx/mt-static/images/captcha-source

エラーが表示されていなくて普通に選択できたら、[変更を保存]をクリックして設定を反映します。

CAPTCHAプロバイダ
CAPTCHAプロバイダ

3.登録/認証を選択して[

]

[変更を保存]をクリックして設定を反映します。

登録/認証

4.後はブログを再構築してコメント書き込み画面のCAPTCHAの画像と入力欄が表示されていれば完了です。

●トラブルシューティング

ここまでやってCAPTCHAの画像や入力欄が表示されなかった場合。色々問題が考えられます。僕がはまった原因を書いておきたいと思います。結論から言うとテンプレートが古い為です。

僕のブログのテンプレートはMT3.2の頃から使っているものです。デザイン自体はMT3.2の時にスタイルキャッチャーから仕入れたものです。ずっと使ってます。これが原因で新しい機能に対応できていません。

MTが標準で読み込んでいるスタイルシートやjavascriptも名前が変わっています。これはアップグレードで古いバージョンから移行してきている場合反映されないようです。

mt-site.js → mt.js
style-site.js → styles.css

対策としてどうすればいいかですが、テンプレートを書き換えて対応させればいいのですが、本来どうなるべきであるかわかってないと難しいです。僕の場合テスト環境にインストールしたMT.4.2RC1のテンプレートを覗いて比較してみてなんとなくわかりましたが通常は難しいです。なので、通常は、メジャーバージョンアップしたらデータだけ移行してデザインやテンプレートは新たにした方が変なトラブルに遭わなくていいのではないかと思います。僕もそのうちMT4.2に移行する時はリニューアルがてら新規インストールにデータだけ移行しようと思います。

とりあえずそれまでは、今のままで行かなければならないので、力技で対応しました。古いテンプレートを利用してCAPTCHA機能を利用したい方は参考にしてみてください。

デザイン>テンプレート>アーカイブテンプレート>エントリー・アーカイブ

と画面を遷移して、エントリーアーカイブに下記の様にコメント入力欄のタグのところに

<p id=”comments-open-text”>
<label for=”comment-text”>コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label>
<textarea id=”comment-text” name=”text” rows=”15″ cols=”50″></textarea>
</p>
<div id=”comments-open-footer” class=”comments-open-footer”>
<input type=”submit” accesskey=”v” name=”preview” id=”comment-preview” value=”確認” />
<input type=”submit” accesskey=”s” name=”post” id=”comment-post” value=”投稿” />
</div>

下記の様に一行追加します。

<p id=”comments-open-text”>
<label for=”comment-text”>コメント: <MTIfAllowCommentHTML>(スタイル用のHTMLタグが使えます)</MTIfAllowCommentHTML></label>
<textarea id=”comment-text” name=”text” rows=”15″ cols=”50″></textarea>
</p>
<div id=”comments-open-captcha”><$mt:CaptchaFields$></div>
<div id=”comments-open-footer” class=”comments-open-footer”>
<input type=”submit” accesskey=”v” name=”preview” id=”comment-preview” value=”確認” />
<input type=”submit” accesskey=”s” name=”post” id=”comment-post” value=”投稿” />
</div>

 

デザイン>テンプレート>システムテンプレート>コメントプレビューについても上記と同様に一行追加します。

これでブログを再構築してうまくCAPTCHA認証機能が使える様になりました。

これでコメントスパムが防げるようになるといいのですが、最近はCAPTCHAを突破してくるコメントスパムもあるらしいので、このスパム対策技術もいずれは過去のものになるのでしょうか?しかし、いたちごっこですねw。だだ、今のところはかなり効果が期待できるのでしばらくこれで様子を見てみようと思います。あと、僕の場合ディスプレイの光度をだいぶ落としているのでCAPTCHAの画像みても全然文字がわからないときが有るw。突破されやすくなってもいいのでもう少し見やすい画像に変えてみようかと思ってます。CAPTCHAはmt-static/images/captcha-sourceにあらかじめ入っている画像をImageMagickで合成しているようなのであらかじめ入っている画像を入れ替えて上げることで画像が変更できるのではないかと考えています。

 

 

タグ : , ,