メサイア・ワークス

PHPで、ひらがなCAPTCHA(画像認証)を自作してみた。

PHPでCAPTCHA(画像認証)を自作してみた。

二ヶ月ぐらい前に、PHPのCAPTCHAライブラリ(securimage)を使って実装してみました。

PHPで簡単にCAPTCHA認証(画像認証)を導入する方法

PHPで簡単にCAPTCHA認証(画像認証)を導入する方法

簡単に出来るのは良いのですが、CAPTCHA画像を生成するのが重くてイマイチ感が…。
解析しようと思ったのですが、思ったより規模が大きかったので、むしろ自作してみました。

参考にしたサイト
PHPスクリプト無料配布所 :: PHP.TO
http://php.to/tips/8/

サンプルもダウンロード出来るのですが、わりと文法エラーがあったり(^_^;)

自作するにあたって、突破されづらい画像認証に必要な要素をリストアップしてみました。

1,画像サイズがそれなりに大きい(小さいと総当りが容易になる)
2,フォントを変更する(今回はIPAフォント6種類を使用)
3,文字を少し歪める(PHPではやり方が分からなかったので未実装)
4,文字を回転(画像自体もわずかに回転させた)
5,文字サイズを不規則(基本)
6、文字の表示位置がランダム(基本)
7,文字の色をわずかに変える(ほぼ黒だがRGBを少しイジる)
8,文字数に幅を持たす(5~6文字位が適当かな?)
9,背景画像は単調で無くす(最低限、同じ背景は止める)
10,リロードされたら違う文字にする(Submitされて間違った時も変更する)
11,表示してから制限時間をつける(5分位?これは未実装)

これらを考慮して作成したソースが、こちら。

実行サンプル

このまま実行すると画像を吐き出すだけなので、入力フォーム用HTMLファイルを用意する。

最終的にOK/NGを判定するPHPファイルも用意

モバイルバージョンを終了