セキュリティについて、みなさん開発者なら当然細心の注意を払って開発を行っているとは思います。しかし、システムを利用する側の多くのユーザは、システムをある程度信頼し、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で確認してみましょう。

※phpinfoの内容
※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

 これで、準備が整いました。