LoginSignup
7
7

More than 5 years have passed since last update.

PHP でパスワードの強度を試すための CrackLib ライブラリを使う

Last updated at Posted at 2015-09-05

PHP の Crack を使おうとして右往左往したのでメモです.

Crackの導入

環境
CentOS release 6.5 (Final)
PHP 5.6.12

cracklib のインストール

$ sudo yum install cracklib cracklib-devel cracklib-dict

crack のダウンロード,インストール

$ svn export http://svn.php.net/repository/pecl/crack/trunk crack
$ cd crack
$ phpize
$ ./configure
$ make
$ sudo make install

私の場合は,$ make の後に $ make test をしてくれと言われました.
ここまで終わったら crack.so が作成されるので,php.ini に設定を追加します.

php.ini
; crack
extension=crack.so

辞書の作成

$ sudo create-cracklib-dict /usr/share/dict/linux.words
$ ls /usr/share/cracklib/
cracklib-small.hwm  cracklib-small.pwi  pw_dict.hwm  pw_dict.pwi
cracklib-small.pwd  cracklib.magic      pw_dict.pwd

テスト

サーバ再起動

これをしなくてもコマンドだと実行可能です.しかし,ブラウザで表示させたり,実際に場合には忘れずに再起動をしましょう.(これで滅茶苦茶時間を食いました)

$ sudo service httpd restart

テストコード

test.php

<?php
// CrackLib 辞書をオープンする
$dictionary = crack_opendict('/usr/share/cracklib/pw_dict');

// パスワードチェックを行う
// 'hogehoge'がみたいパスワード
$check = crack_check($dictionary, 'hogehoge');

// メッセージを取得する
$diag = crack_getlastmessage();
switch ($diag) {
  case "it's WAY too short":
    $diag = "あまりにもパスワードが短すぎます";
    break;
  case "it is too short":
    $diag = "パスワードが短すぎます";
    break;
  case "it does not contain enough DIFFERENT characters":
    $diag = "同じ文字や数字が含まれすぎています";
    break;
  case "it is all whitespace":
    $diag = "空白だけのものは使えません";
    break;
  case "it is too simplistic/systematic":
    $diag = "単純もしくは規則正しすぎます";
    break;
  case "it is looks like to a National insurance number":
    $diag = "国民保険の番号のような番号は使えません";
    break;
  case "it is based on a dictionary word":
    $diag = "辞書に含まれる単語だけではいけません";
    break;
  case "it is based on a (reversed) dictionary word":
    $diag = "辞書に含まれる単語を逆順にしただけではいけません";
    break;
  case "strong password":
    $diag = "強いパスワードです";
    break;
  default:
    $diag = "";
    break;
}

// 辞書を閉じる
crack_closedict($dictionary);

echo $diag;
?>
$ php test.php
同じ文字や数字が含まれすぎています

参考
Crack関数のインストール
PHP: Crack - Manual
phpize で共有 PECL 拡張モジュールをコンパイルする方法

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7