Home » October 2006 » Captcha Plugin 0.11a公開

Captcha Plugin 0.11a公開

CAPTCHA™テストを使った簡単なアンチコメントスパムプラグイン(Captcha Plugin公開 - Ogawa::Memoranda)をアップデートしました。

Captcha Plugin.ja JP - Ogawa Code
Captcha Plugin - Ogawa Code

最初に公開した時点ではプロトタイプ的なものでしかありませんでしたが、今回はなるべく柔軟に使用できるように以下の拡張をしました。

  1. ブログごとにCAPTCHAテストの有効・無効を選択できるようになりました。
  2. CAPTCHAテスト文字列の長さを変更できるようにしました。
  3. CAPTCHA 画像の格納先ディレクトリをユーザが指定できるようにしました。いくつかのWebホスティングサービスではCGIスクリプトの格納場所に制限があるため、 0.02までのように特定のディレクトリにCAPTCHA画像を生成するようになっているとブラウザで画像にアクセスできない場合がありました。
  4. CAPTCHAテストの生成時・検証時に用いるsecret keyを設定できるようにしました。
  5. その他、ちょっとした最適化。

4. のsecret keyの設定機能に関して補足しておきます。

Kazuho@Cybozu Labs: Captcha Plugin/ja についてでも指摘されている通り、このプラグインで使用されているAuthen-Captchaはbrute force attackに弱い性質がありました。

CAPTCHAテストの生成時と検証時に共有鍵を使用する方式に改めればこの問題は大幅に緩和でき、実際下記のようなパッチも提案されています(FreeBSD portsでp5-Authen-Captchaをインストールするとパッチが当たったものがインストールされます)。

#7664: improve Authen::Captcha security

Captcha Pluginのsecret keyの設定機能は、このパッチが当たっているAuthen-Captchaがインストールされている場合のみ有効になります。この機能を使用するためには、おそらくほとんどのユーザは、手でこのパッチを当てる必要がありますのでご注意ください。


Authen-Captchaはもう保守されていないっぽい。Authen-PluggableCaptchaというのもあるけど。本当はGoogleあたりがCaptcha部分だけ外部サービスとして提供してくれれば良いのにね。

2006-10-08追記: CAPTCHA表示用のテンプレートをプラグインの設定画面から変更できるようにした0.12を公開してあります。

2006-10-17追記: CAPTCHAを使用しない設定にしたブログで、正常にコメントポストできない問題を修正した(0.13)。

Comments and Trackbacks

Legacy Comments (13)

  1. お疲れ様です。
    孝介はもう大丈夫かな!
    でも圧巻は 7 回、日大藤沢の御大!と、あそこで変えない竜の御大!ってとこでしょうか。

  2. 広島戦は2勝2敗、週末の3試合のうち1試合は雨で流れる(そうしないとローテーションを中4日で回さなくてはならないし)、絶対そうにちがいないと月曜日に予測を立て、来週火曜日の東京ドームのチケットをとっちゃってました。

    実際には3勝1敗、週末3試合は好天に恵まれそうであちゃーって感じです。というかドラゴンズ(とお天道さま)はそんなに弱くありませんでした、ごめんなさいという感じ。先に優勝が決まればそれでもいいかな、と。ビールかけ翌日のグダグダの試合を観る機会もなかなかないでしょう(それにひょっとしたら桑田が投げるかも…)。

  3. こんにちは。

    TypeKeyにログインしている状態でコメントする場合、エントリーのコメントフォームからでは問題ありませんが、コメントプレビューのフォームから投稿すると、captcha_testにひっかかって投稿ができませんでした。
    コメントプレビューから投稿すると、$app->_get_commenter_sessionで$commenterを得られていなくて、そこでひっかかっていました。

  4. 上のコメントの件ですが、そちらのBlogでは、サインインした状態でも、コメントプレビューから投稿することができました。
    こちらの環境の問題のようです。

  5. こんにちは。

    さらに調べてみたところ、MT 3.21とMT 3.33とで、$app->_get_commenter_sessionの処理が若干変わっていました。
    MT 3.21と同じ処理に変えたところ、コメントプレビューからでも問題なくコメントを投稿できるようになりました。

    ちなみに、MT 3.33本来の$app->_get_commenter_sessionの処理にして、通常のコメントプレビュー(Captchaプラグインを使わない状態)でTypekeyにログインしてコメントすると、Typekeyからログアウトした状態でコメントが投稿されました。
    MT3.33の不具合のようですので、シックスアパートにフィードバックしておきました。

  6. ありがとうございます。

    まだキャッチアップできていませんが、Captchaの方でも、_get_commenter_sessionの振る舞いに関わらず、robustにできる点があれば対応していこうと思います。

  7. はじめまして、こんばんは。
    こちらの記事を読ませていただいて
    早速captchaの導入を試みましたが、なかなかうまくいかないのでお聞きします。

    つい最近新しくサーバーを変えて、現在はsshが使えるようになったので、Perlモジュールをインストールしました。
    モジュールの方はうまくインストールできましたが、MTのプラグイン画面の「設定を表示」で躓きました。Enable Captchaにチェックを入れ、Secret Stringに適当な文字を入れ、設定を保存を押しました。そうしたら、

    SQLエラーが発生しました: ERROR: null value in column "plugindata_id" violates not-null constraint

    というエラーがでました。DBは新しくPostgreSQLを使っています。文字コードはEUC-JPです。その辺りが原因なのだとは思いますが、解決策をアドバイスいただければと思います。DBのせいでできないのであれば、あきらめます。お手数かけますが、よろしくお願いします。

  8. このエラーが起きるのはCaptchaプラグインに特有のことですか?

    他のプラグインで設定を保存したりするとどうなるのか教えてください。

  9. 実はAddToHatenaBookmark Pluginでも、同じ現象が起きました。なのでおそらくCaptchaプラグインだけのことではないように思います。

    詳しくは分かりませんが、こちらのブログの不具合かもしれませんね。

  10. 他の標準プラグインではどうです?

    もしうまくいかないのであれば、PostgresにBLOBを突っ込むこと自体がうまくできていないということなので、改めてSixApartに改善を求めたいと考えています。

  11. 他の標準プラグインですが、
    設定を保存を押すと、みな同じエラーが発生しました。
    ご指摘ありがとうございます。
    Postgreが問題なのですね。
    このまま使っていけるのか心配になってきました。
    SixApartへの要望よろしくお願いします。
    いろいろとありがとうございます。

  12. こんばんは。
    先日はプラグインの件、どうもありがとうございました。
    あれからSixApartへフィードバックして回答をもらいました。
    PostgreSQLで実際に試験運用してもエラーは起こらないということでした。
    それを聞いてので、私はもう一度新規MTをインストールしなおしました。
    そうしたら、標準プラグインでも、Captchaプラグインでも、変更を保存できるようになりました。
    ありがとうございました。

    ※ただ、設置がやはりうまくいかず断念。どうしてもCaptcha画像が出てこないのです。どこが間違っているのやら、だんだん分からなくなってきました。Authen::Captcha とGDはインストールできているのですが、あと少しですね・・・。

    では、失礼します。

  13. 以前Captchaプラグインを導入しようとして
    うまくいかなかったものですが、
    ようやく成功しました。ありがとうございました。
    「captcha.pl」「captcha_js.cgi」の修正がきちんとできていなかったことがどうも原因のようでした。

    PostgreSQLの方は快適で、全再構築も速く満足しています。
    知識不足で何かとご迷惑をおかけしたことお詫びします。おそらく私の単純なミスでドタバタしたのだと思います。
    では、失礼いたします。