BlowfishPasswordHasherを使って自前でパスワードチェックをする。

CakePHPで認証処理をする場合は、Authコンポーネントに任せていると思いますが、自前で認証したい場合。

こんなふうにやってはダメ!
$pw = new BlowfishPasswordHasher();
$user = $this->User->find('first',['conditions'=>['name'=>$name,'password'=>$pw->hash($password)]]);

どうするかというと・・・

やってみればわかるのですが、BlowfishPasswordHasher::hashメソッドで同じキーワードでハッシュを生成すると、コールするたびに変わります。
ですので、同じパスワードを使っても同じハッシュは出てきません。
MD5とかだと同じハッシュになってしまうので、同じパスワードだということが分かってしまい、セキュリティーレベルが低いというわけです。

なのでBlowfishPasswordHasher::checkメソッドを使いましょう。
こんな感じ?

$pw = new BlowfishPasswordHasher();
$user = $this->User->find('first',['conditions'=>['name'=>$name]]);
if(!$pw->check($password,$user['User']['password']){
//認証NG!!
}else{
//認証OK!
}


スポンサーリンク

タイトルとURLをコピーしました