PHPでパスワードの暗号化は「password_hash」を使うのがベスト

昨今、サイバー攻撃などで個人情報などのセンシティブな情報の流出事件が増えてます。
Security NEXTさんのところで日々掲載されるだけでもこれだけ出てますので、対岸の火事では済まされないものがあります。
流出を防止するための対策はもちろんですが、万が一流出してしまった時に例えばパスワードが平文だったりすると攻撃者はそのままパスワードを入れるだけでログイン出来てしまうので、パスワードは暗号化する必要があります。

PHPでよくあるパスワード暗号化方法としてmd5関数を使ったハッシュ化があります。md5のハッシュ化は不可逆なので元の文字列に戻すことは出来ません。
ですが・・・、実はこのmd5で単純にハッシュ化しても簡単なパスワードだった場合は簡単に破られてしまいます。よくあるパスワードはデータベース化されていてハッシュ化後の文字列で検索すると、元パスワードを出してくれるとんでもないサービスがあったりします。(つまり、ハッシュ後の文字列と元の文字列の組み合わせを何通りもデータベース化している)

結局のところどうすれば良いのかというと、PHP5.5から使える「password_hash」がベストです。
PHP5.5未満の場合は、同じアルゴリズムのpassword_compatを使うと良いです。(PHP5.3.7>=)
centos6系のデフォルトリポジトリだと未だに5.3.3なのでIUS Communityのリポジトリを使って5.4以降にすることをオススメします。

password_hashの注意点として第2引数のalgoを渡すと、パスワードが72文字以上だった場合詰められてしまうみたいです。

Filed under PHP

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です