セキュリティについて、みなさん開発者なら当然細心の注意を払って開発を行っているとは思います。しかし、システムを利用する側の多くのユーザは、システムをある程度信頼し、IDとパスワードがかかっていれば大丈夫などと思いがちです。
そのため、パスワードに覚えやすいものや、入力しやすいものを設定する人も多いのが現状です。しかし、そういった単純なパスワードは「ブルートフォースアタック」と呼ばれる、辞書ファイルなどからの総当り攻撃に非常に弱いといった問題があります。そこで、PHPのCrack関数の出番です。
Crack関数とは、PECLとして提供されており、パスワードの「強度」を試すためのCrackLiライブラリが使用可能となります。
ユーザがパスワードを設定する際に、パスワードの強度をチェックすることができます。
それでは、早速試してみたいと思います。今回の環境は、CentOS5、PHP5.1.6、crack-0.4となります。(CrackLibライブラリがインストールされていない方は、上記CrackLibのサイトからダウンロードしインストールしてください。)
まずは、crackモジュールのインストールです。PECLとして、提供されていますので、インストールはpeclコマンドで簡単に行えます。
$ pecl install crack
(しかし、今回の環境ではエラーがでてしまいましたので、以下の方法でインストールしました。)
$ pecl download crack
$ tar xvzf crack-0.4.tgz
$ cd crack-0.4
$ phpize
$ ./configure
$ make
$ make install
そして、crackモジュールをphp.iniで読み込むように設定します。
$ vi /etc/php.ini
extension=crack.so
apacheを再起動し、phpinfoで確認してみましょう。
次にCrackLib用の辞書ファイルを用意します。英単語ファイルはyumでインストールできます。
yum install words.noarch
インストールした、wordsファイルから、CrackLib用の辞書ファイルを作成します。
$ create-cracklib-dict /usr/share/dict/linux.words
$ ls /usr/share/cracklib/
cracklib.magic pw_dict.hwm pw_dict.pwd pw_dict.pwi
これで、準備が整いました。