Home日記このサイトについてMovableTypeMT3.xx-ja > Captchaプラグイン導入

« 続:コメントスパム対策(Captchaプラグイン) | Main | さくら満開 »

Captchaプラグイン導入

2007年4月 2日

07040101.jpg

昨日のお知らせの通り、スパム対策としてCaptchaプラグインOgawa::Memorandaさん公開)を使うことにしました。
コメントをくださる方に手間をかけさせてしまうので、この手の対策はできれば避けたかったのですが・・。

さていくつか気をつける点があったので、以下適用手順の覚書です。

◆前準備その1

Authen::CaptchaというPerlモジュールが必要です。
ところがロリポップのサーバーには入っていません(他のレンタルサーバーも入っていないことが多いらしいです。)。

そんな訳で以下の作業が必要。
Authen::Captchaをダウンロードし解凍。
②(mt home)/extlibにAuthenフォルダを作成。
③②で作成したAuthenフォルダに、解凍したファイル(の一部)をアップロード。

* (mt home)/extlib/Authen/Captcha.pm
* (mt home)/extlib/Authen/Captcha/images(フォルダ以下全部)

◆前準備その1の動作テスト
Authen::Captchaの動作テストをしたい場合はCaptcha/examplesフォルダ以下も必要です。
動作テストについては「ロリポップでCaptcha plugin導入」を参照してください。

◆前準備その2
Authen::Captchaにパッチを当てる。

Captcha Plugin 0.10以降では、brute force attackへの対策としてsecret keyによる簡易な認証機能をサポートしています。この機能を使うためには、下記のパッチをAuthen::Captchaに適用する必要があります。FreeBSDなどのportsではこのパッチは適用済みになっています。

#7664: improve Authen::Captcha security

とあるので当てました。というかこれを当てないと、Captchaを使用しないブログのコメントフォーム(うちのサイトだとmailフォームですが)がエラーになってしまったのです。原因違ってたまたま直ったのかもしれませんが。

私は手で直しました。Captcha.pmをテキストファイルで開きます。
#7664: improve Authen::Captcha securityの更新履歴の部分を見てください。

- my $md5 = md5_hex($code);
+ my $md5 = md5_hex($code . $self->secret);

というように「+」や「-」があるので「+」の場合はCaptcha.pmに追加。「-」の場合はコメント(文頭に#をつける)してください。
場所はわかりづらいですが、前後と同じ文を探してください。

◆本体をインストール

Captchaプラグインのインストール方法にあるとおりなのですが一部注意。

①Captcha.zipをダウンロードして解凍。
②「前準備その1」をやった場合はcaptcha.pl、captcha_js.cgi、captcha_js.fcgiに以下の修正が必要です。

use lib '../../extlib';←追加
use Authen::Captcha;

③解凍したcaptchaフォルダごと以下の場所へ保存する。
* (mt home)/plugins/captcha(フォルダ以下全部)

④パーミッション(属性)を変更。
* (mt home)/plugins/captcha/captcha_js.cgi ... CGIスクリプトとして実行可能にする(例755か705)
* (mt home)/plugins/captcha/data ... CGIスクリプトから書き込み可能にする(例707)
* (mt home)/plugins/captcha/images ... CGIスクリプトから書き込み可能にする(例707)

⑤確認
 プラグインにCaptchが表示されていれば無事インストール終了

◆使い方
これもCaptchaプラグインの使い方にあるとおり。

コメントフォームのあるすべてのテンプレートに以下を追加し、再構築。
追加場所は必ずコメント用のform要素の内部に記述すること。
わかりにくかったら「投稿」ボタンの前とかにすればいいかと思います。

<script type="text/javascript" src="<$MTCaptchaJsURL$>"></script>

コメント時「確認」ボタンのある方は、確認用テンプレートにも上記を追加しないと確認後に投稿できません。
確認用テンプレートはデフォルトだと環境設定→テンプレート→システム→コメント・プレビュー。

◆注意
各ブログ→設定→プラグイン→Captchの設定を表示
 ・Enable CaptchaにCaptchを使用するブログのみチェックをつける必要があります。
 ・Captcha Templateで見た目を修正可能。

Captchが表示されない時、「captcha_js.cgi」の条件を削除(#の部分)

print $q->header('text/javascript');
# print "if (!commenter_name) {\n";
print "\tdocument.writeln('$_');\n" foreach split(/\r?\n/, $tmpl);
# print "}\n";

多分HTMLが間違ってるんだろうけどね~。私のもmailフォームで試した時と確認用は上記を行わないと表示されませんでした。

◆画像変更
背景画像変更したんだけど、ダウンロード元がわからなくなってしまった(爆)
でも本当はもうちょっと見やすいのに変更したい。背景も字も崩し具合も。

プラグイン元

Ogawa::MemorandaCaptcha Plugin公開
Ogawa::MemorandaCaptcha Plugin 0.11a公開
Ogawa::MemorandaCaptchaプラグイン

参考

hide-k.net#blogCpatcha Pluginをレンタルサーバーで使ってみる
nni's blogロリポップでCaptcha plugin導入

以上です。

投稿者 おーたむ : 00:32 | MT3.xx-ja | コメント [0] | トラックバック [0] | ▲top

エントリー


トラックバックURL


よろしければコメントください。