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!
}