Midari Create > webアプリケーション製品 >

画像認証ライブラリZizai CAPTCHA

Zizai CAPTCHA

Zizai CAPTCHAはPHPのwebアプリケーションへの組み込みを想定した著作権フリー(パブリックドメイン)の画像認証ライブラリです。
初期設定のままでも運用できる導入の容易さと、ページデザインに応じた認証画像の色・フォント、文字数などのカスタマイズ性の両立を目指した設計となっており、掲示板のスパム投稿軽減やメールフォームの迷惑メール抑制など、様々な用途に活用していただけます。
また、CAPTCHAとしては一般的な英数字のほか、ひらがな、カタカナでの認証にも対応しています。
※同梱のフォントファイルは英数字とカタカナのみに対応しているため、ひらがなをご利用いただく場合は別途ひらがな対応のフォントファイルをご用意いただく必要があります。

なお、本ライブラリを含め、画像や音声を使用したCAPTCHAは人海戦術や高度な深層学習を使用した不正アクセスに対しては十分な抑制効果が得られないことが知られています。
特に高い信頼性が要求される用途については、CAPTCHAだけでなく、電話番号やキャリアメールなど他の認証方法との併用が推奨されます。

スクリーンショット

初期設定から画像サイズや色、文字数などの設定を変更せず、CSSによるフォームのデザインも行っていない場合の動作例です。
Zizai CAPTCHA スクリーンショット

導入方法

(1) ダウンロードしたZIPファイルを解凍し、zizai_captchaフォルダをwebアプリケーションのフォルダ内にコピーします。

(2) zizai_captchaフォルダ内のzizai_captcha.dbに外部からアクセスできないよう、.htaccessファイルやNginxのconfファイルでアクセス拒否設定を行ってください。

(3) 以下の【送信側】のコードを画像認証を設置するページのHTMLフォーム内に、【受信側】のコードをフォーム受信側のPHPファイルにコピーすれば導入完了です。

【送信側】(HTML)
<script src="zizai_captcha/captcha.js"></script>
<div id="zc_captcha_area"></div>
<script> zizai_captcha_get_html(function (html) { document.getElementById("zc_captcha_area").innerHTML = html; }); </script>

【受信側】(PHP)
include "zizai_captcha/main.php";
$zc = new zizai_captcha();
if ($zc->check($_POST["zizai_captcha_id"], $_POST["zizai_captcha_characters"])) {
//ここに認証時の処理を記述してください
} else {
//ここに拒絶時の処理を記述してください
}

なお、上記の送信側コードでは、設置ページにアクセスがあるたびにサーバにおいて認証画像の生成処理が行われます。
サーバ負荷を抑えたい場合は、以下のように認証画像を表示するためのボタンを別に用意して、そのボタンのonclickイベントでzizai_captcha_get_html関数を実行するようにしてください。

【送信側の例】(HTML)
<script src="zizai_captcha/captcha.js"></script>
<button type="button" onclick="zizai_captcha_get_html(function(html){ document.getElementById('zc_captcha_area').innerHTML = html; });">認証画像を表示</button>
<div id="zc_captcha_area"></div>

カスタマイズ

zizai_captchaフォルダ内のconfig.jsonを編集することで本ライブラリの挙動を設定可能です。
config.jsonの設定値は以下のようになっています。

"db_path" : SQLiteデータベースファイルのパス(config.jsonのある階層基準)
"timeout_seconds" : 認証画像の有効時間(秒)
"lockout_seconds" : 認証に失敗したIPアドレスのロックアウト時間(秒)
"image_height" : 認証画像の高さ(ピクセル)
"char_count" : 認証画像に表示される文字数
"script" : 認証画像の文字に使用する用字系(0:英数字, 1:ひらがな, 2:カタカナ)
"fonts" : 使用するフォントファイルのパス(配列で1つ以上指定、config.jsonのある階層基準)
"colors" : 使用する色(配列で2つ指定、各色は、[R,G,B]の形式で0~255の整数値を指定)

なお、認証画像の横幅については、高さ×文字数で自動的に決定されます。

加えて、zizai_captcha_get_html(callback_func, button_color)の第2引数button_colorを省略せずに"#ffffff"のような16進数形式で色を指定することにより、CAPTCHAの再読み込みボタンの色を変更可能です。
また、zizai_captcha_get_html関数により出力されるボタンやテキストボックスは、通常のINPUT要素やBUTTON要素と同様にCSSによるスタイル指定が可能です。

より詳細なカスタマイズが必要な場合は、本ライブラリのFossilリポジトリで開発者向けドキュメントをご覧いただくことが可能です。

ダウンロード

Vectorからダウンロード(推奨)

当サイトからダウンロード

ライセンス

本ソフトウェアは無権利創作宣言にしたがって著作権放棄されています。

ソースコード

開発者向けソースコードはFossilリポジトリにて公開しています。