2013年8月28日水曜日

最近のPHPでPECLのcrackを使う方法

cracklibって知ってる?そう、毎度おなじみパスワードの強度なんかを調べてくれる素敵なライブラリ。

CentOS6なんかだと

# yum install cracklib cracklib-dicts cracklib-devel

とかするとライブラリ自体(と必要そうなもの一式)はインストールされるんだけど、そのままPHPで使えるようになるわけじゃない。PHPから使うためにはPECLを使う必要がある。このことは、PHPのマニュアルにも書いてあるし、アシアルさんのPHPプロ!TIPS+(Vol.49)でもそのように解説されているから間違いないはず。

一応手順を説明しておくと、

# pecl install crack

してからphp.iniに「extension=crack.so」を追加するだけ。でも、ちょっと待って。この手順だと最近のPHPじゃ使えない……というかインストールできないのさ。念のため言っておくけど、「"pecl download crack"して"./configure;make;make install"」すればいいよって話でもない。

なぜか。答えは「PHPのsafemodeが無くなったから」ってことらしい。一応、それらしき話が「Bug #58779 Cannot install package with 'pecl install'」ってとこに書いてあって、パッチも投稿されている。でもこのパッチ、最新のPECL:crackリリースには含まれていない。それもそのはず、最新のリリースが2005年なのに対して、パッチの話は2009年の話。含まれているわけがない。

じゃあ個別にパッチをあてるしかないのか……というとそうでもない。もちろんそうすることもできるけど、SVN中のコードはパッチが適用されているっぽい(- Fixed build on 5.4 (patch by: jlladono at gmail dot com))のだ。ってことで、SVNから最新のコードを引っ張ってくるって手もアリだよねという結論に至る。

結論に至ったのだけど、「じゃあ、PECLのSVNってどうやってアクセスするの?」という疑問が湧いてくる。その答えはPHPのマニュアル(PECL 拡張モジュールをダウンロードする )に書いてある。それを参考にすると……

$ svn export http://svn.php.net/repository/pecl/crack/trunk crack

って感じにするといいらしい。そうすることでSVNから最新(?)のパッチ適用済みソース一式がゲットできる。ちなみにPHPのマニュアルだと「svn checkout」になってるけど、必要性皆無なので「svn export」にしてる。で、ソースをゲットしたら

$ ./configure --with-php-config=/path/to/php-config --with-crack
$ make
$ sudo make install

とかやればインストールできる(言うまでもないけど、「/path/to/php-config」は自分の環境に合わせて書き換えるべし)。そしたら前述の手順に沿ってphp.iniを編集すれば使えるようになる。

ちゃんとしたリリースパッケージじゃないからもしかしたら不具合があるかもしれないので、十分テストしてから使った方がいいと思うけど、とりあえずこれで使うことは出来るようになった。JavaScript(jQuery)とかでもパスワード強度チェックはできるみたいだけど、覚えておくといろいろ楽しいかもしれない。

0 件のコメント:

コメントを投稿