Captcha Plugin公開
CAPTCHA™テストを使った簡単なアンチコメントスパムプラグインを作ったので公開しておきます。
Captcha Plugin.ja JP - Ogawa Code
このプラグインは、以下のように、コメント時に大抵の人間には容易に解答できるがプログラムでは簡単に解けないようなテストを課すことで(この場合はSecure Codeを入力させることで)、spambotを排除するという仕組みを実現します。

Movable Typeで同様の機能を実現する方法としては、SCode - Movalog Plugins - TracやCAPTCHA によるコメントスパム対策 - Open MagicVox.netが知られています。
Captcha Pluginがこれらと異なるのは、セッションごとに(つまりはコメントフォームが表示されるごとに)Javascriptを使って新しいCAPTCHAテストを生成するということと、各CAPTCHAテストに有効期限が設定されていることです。ですから、単純なbot攻撃に加えて、「人間が解いて、botが攻撃する」タイプのbot攻撃にも有効ではないかと思われます。
また、セッションごとに新しいテストを生成するということは、テストの生成が十分に軽量に行える保証が必要です。このため、テスト生成を行うCGIスクリプトcaptcha_js.cgiは簡単なものに留めて、あえてMTアプリケーションにしていません。MTアプリとして作ると、プラグインの設定画面での設定内容を処理に利用できるとか、中間ストレージにMTのフレームワークを利用できるとか可用性の点で大いにメリットがある反面、ブートストラップやDBアクセスのオーバーヘッドが無視できないものとなります。
ちなみにSCode Pluginは、テスト画像を作るCGIプログラムをMTアプリとして実現しており、その上毎セッションまったく同じ画像を返すにも関わらず、GDモジュールを使って毎回画像を生成していてキャッシュすらしません。それもなんだかなあ…。
このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/402
いつもお世話になっております。
3.2にバージョンアップしたら SCode を導入しようと思っていました。
実は、毎セッション同じ画像になるのに疑問も持っていましたので、こちらにしようと思います。
・・・が、なんとうちには Authen::Captcha が入っていません。入れてくれるようお願いしておきましたが、うまくいくといいなぁ。
モジュールを入れてもらい、早速動作を確認できました。
そこさえクリアできていれば、そのあとの設置は至極簡単でした。リロードごとに文字は変わるし、効果も高そうです。
ちょっと文字が見にくすぎるかなという気はしましたが(効果とトレードオフでしょうね)、背景画像等は変えられるんですかね? 自分でも調べてみたいと思いますが・・・。
とにかく、いつもながら有用なツールをありがとうございます。
背景画像や文字画像は変更できます。まず、以下のページにある画像ファイルをダウンロードしてきます。一から必要なファイルを作ってもよいですが面倒なので。
http://search.cpan.org/src/UNRTST/Authen-Captcha-1.023/Captcha/images/
次に一部のファイルを自分の好きなものに置き換え、適当なディレクトリに置きます。
最後にcaptcha_js.cgiを編集して「output_folder => './images',」の行の後に以下のように追加するだけです。
images_folder => '画像ファイルのディレクトリ',
なるほど、ogawaさんのプラグインみたく、判定処理はCommentThrottleFilterコールバックを使うのがスマートですね。
SCodeもおんなじようなことをやっています。CommentThrottleFilterのメッセージを変更できるとなお良いのですけれどね。他にもヒューマンテスト的なものが流行ってきているみたいです。
http://www.staggernation.com/mtplugins/TinyTuring/
http://jayallen.org/projects/comment-challenge/2006/03/introducing_comment_challenge_plugin.php
超!初心者な質問で申し訳ありません。
こちらのプラグインをぜひ利用したいのですが、肝心の必要なソフトウエア、Authen::Captchaが入っていませんでした。こちらは、サーバーに頼んで入れてもらう必要があるのでしょうか、それとも、自分で入れることができるものですか?
Perlなどの知識はほとんどありませんので、プラグインをインストールする段階で「Authen::Captchaが入っていない」という事実を確認するまではできたのですが、それ以上はお手上げになってしまいました。
宜しければ、この後どうすればよいのか教えていただけませんでしょうか。お願いします。
Authen-Captchaが自分で入れられるかどうかについてはサーバー環境に依存する問題で、私は答えようがありません。Yesであり、Noです。腕に自信がなければNoだと思った方がよいでしょう(GDモジュールがインストールされているかどうかが問題)。サーバー管理者に相談してください。
すみません、ちょっと困った事になってるので質問させてください。
MT3.31にCaptcha Pluginを入れているのですが、TypeKeyにサインインをしてコメントを書くと
・不必要なコメントの投稿を防ぐために、連続した投稿を受け付けないように設定しています。しばらくしてから、もう一度試してみてください。
のエラーが必ず出て、書く事が出来ないのですが。これは私のブログだけで起きる事なのでしょうか?
Captcha Pluginのおかげでコメントスパムが無くなり、大変感謝しているのですが
TypeKey認証も使える様にしたいので、この原因について是非教えて欲しいのです。お願いします。
プラグインは、TypeKey認証が済んでいるのであれば、captchaの検査をスキップするようにしてあります。
コメントのテストをし過ぎてスロットリングされているわけではないのですよね?
もしうまく行かないのであれば、Site Javascriptがちゃんと再構築し直してあるかどうか確認してください。ブラウザにキャッシュされている場合もあるのでリロードをお忘れなく。
Ogawaさん、コメントありがとうございます!
そして、コメントを2重で投稿してすみませんでした。1つ消してください。
コメントのテストとかは、ほとんどしていないのでSite Javascriptっぽいです。
とりあえず、Site Javascriptの再構築とCookieを消したらコメント書けました。
Captcha Pluginが悪い訳で無いと分かってホッとしました。本当にアドバイスありがとうございます。
インストールしたのですが、captcha_js.cgi にアクセスするとIntel Server Errorになります。
Movable Typeのバージョンは3.31
「Authen::Captcha」と「GD」ともにインストールされています。
管理画面の「プラグイン」の部分にはきちんと「Captcha」のプラグインが表示されていますが、各個別エントリーのコメントのフォームの部分には「Captcha」が表示されません。
やはりバーミッションの設定がおかしいのでしょうか?
captcha_js.cgi ← 755
data ← 777
images ← 777
この辺りの知識があまりないので間違っていればもしければ教えてください。
パーミッションの問題ならサーバの設定によりますから、私は答えられません。
それ以外の問題ならサーバのerror_logを見る必要があります。
Captcha PluginをインストールしたMovable Typeで、
二つのブログを所有し一方でのみCaptcha Pluginをしようしている場合、
コメントの認証にCaptcha Pluginを使用していないほうのブログでは、どうなりますか?
基本の設定>プラグインではCaptchaが利用可となっていて、不可にする事ができないので気になっているのですが…
宜しければ、教えてください。お願いします。
現在のところ、Captcha Pluginを組み込むとすべてのブログで利用せざるを得ません。
近々まとめて改修しようと思っています。
はじめまして、こんにちは。
Captcha Plugin の組み込み自体は問題なく、CAPTCHA Code も無事に表示され動作はしているのですが、1点だけ問題がありましたので質問させていただきます。
ブラウザのCookieを何度も削除しながら様々な条件でテストしてみた結果、TypeKeyにサイン・インした状態で、コメントの確認(Preview)してから投稿(Post)した場合のみ、コメントエラーが発生するようです。確認せずにそのまま投稿すれば問題ないようです。また、TypeKeyにサイン・インしていない場合は、確認しても問題なく投稿されるようでした。
ちなみに、テスト環境は Movable Type 3.34 で、ブラウザは IE と Firefox で確認しました。
これらの挙動を含めて、どのような原因があるのかご教授願います。
申し訳ありません、自己解決いたしました。
問題があったのは Captcha Plugin ではなく、MT本体にありました。
具体的には壱さんのエントリー、
http://www.h-fj.com/blog/archives/2006/10/30-085135.php
に解決策が掲載されており、その通りに修正したところ問題なく動作いたしました。
迷惑なコメントをしてしまい、重ねてお詫び申し上げます。
はじめまして。Raptorと申します。
Captcha Pluginを利用させていただきました。ありがとうございます。また、トラバを打たせていただきました。今後ともよろしくお願いします。