サイバーリドル

captchaに関するメモ

しはダメだと思います

掲示板スパムが多く、一晩で500件書き込まれるという被害にあったので認証システムを急遽作成しました。 内容は一般的にcaptchaと言われるものをゲイツ認証をヒントに超簡単にしたものですが、意外と効果があったので公開しておきます。 投稿ボタンが画像になっただけなので、投稿するときのクリック回数が増えないという所がこのシステムのポイントです。

サンプルイメージ
書き方
以下はperlを想定していますので、その他の言語を使う場合は各自で書き換えてください。
サンプルのままでは7分の1の確率で認証してしまうので、パターンを増やしたほうがいいかもしれません。
  1. 初期処理
    以下をスクリプトの先頭付近に書いておきます。3行目の計算式を複雑にすると、より強固になるでしょう。
    @color_bar=("赤色","緑色","青色","黄色","水色","紫色","黒色");
    $quiz=int(rand(7));
    $captcha=$quiz+12345;
    
  2. フォーム
    認証するための色の説明と画像を表示します。右から○番目などの数字より漢字で書いたほうが効果的です。
    <input type="hidden" name="captcha" value="$captcha">
    投稿するには、【$color_bar[$quiz]】をクリックしてください。
    <input type="image" name="submit" src="./captbar.gif">
    
  3. 認証
    投稿処理の先頭付近で判定します。2行目の計算式は初期処理と合わせてください。
    $ret=int($in{'submit.x'} / 34);
    if($ret == ($in{'captcha'}-12345) && $in{'submit.y'} > 0){
     &put_data();
    }else{
     &error("画像認証に失敗しました。");
    }
    


captchaに関するメモ CYBER RIDDLE