2014-09-21 3 views
0

저는 php와 cakephp에 익숙하지 않습니다. cakephp (http://book.cakephp.org/2.0/en/tutorials-and-examples/blog-auth-example/auth.html)에서 간단한 인증 및 권한 부여 응용 프로그램 자습서를 따랐습니다. 모두 잘 작동하는 것 같습니다.Cakephp 및 사용자 이메일 확인

사용자가 가입 할 때 계정을 활성화하라는 확인 이메일을 추가합니다. 튜토리얼에서 암호는 blowfishpassword hasher를 사용하고 있습니다. 그리고 나는 그것을 확인을위한 링크의 토큰으로 사용하고 있습니다.

하지만 난
$passwordHasher = new BlowfishPasswordHasher(); 
      $motdepasse = $this->data['Utilisateur']['mot_passe'] = $passwordHasher->hash(
       $this->data['Utilisateur']['mot_passe'] 
      ); 
      $link = array('controller'=>'utilisateurs','action'=>'activate',$this->Utilisateur->id 
        .'-'. $motdepasse); 


public function activate($token) { 
    $token = explode('-',$token); 
    $user = $this->Utilisateur->find('first',array(
    'conditions' => array('id' => $token[0],'Utilisateur.mot_passe' => Security::hash($token[1], 'blowfish', 'Utilisateur.mot_passe')) 
)); 
    debug($user); 
    debug($token[1]); 
    die(); 

} 

당신이 날 도울 수 ... 데이터베이스의 암호를 사용하여 링크 토큰을 비교 할 수없는 것? 고마워!

+0

수동으로 하시겠습니까? 각각의 해시 된 버전이 무엇인지 확인하고 실제로 해쉬가 다른지 확인하십시오. – Dave

답변

1

먼저 해시가 안전 할지라도 암호 해시를 보내면 안되며 확인 토큰을 별도로 생성해야합니다. 추가 열 또는 별도의 테이블에 저장하기 만하면됩니다.

즉, 사용자의 activate() 메서드에서 해시를 다시 해시하는 경우 해시가 실제로 생성 될 경우 비교가 실패하게됩니다.

잘못된 소금 : http://www.php.net/crypt를 방문하여 건물의 해당 부분을 읽어 보시기 바랍니다 복어에 대한 Utilisateur.mot_passe 다음과 같은 경고가 발생할해야 잘못된 소금 값을 사용하지만 스크립트는 해시를 genereate하지 않습니다 복어 소금.

Security::hash()은 빈 문자열을 반환합니다. 그러한 메시지를받지 못하면 enable the debug mode이 필요합니다.

보안 관련 기능을 구현하기 전에 PHP, CakePHP, 해시 등의 기능에 익숙해지는 것이 좋습니다.

https://github.com/CakeDC/users을 확인할 수 있습니다. 이메일 확인 및 기타 많은 기능을 지원합니다.

+0

@PatriceB는 경량 접근법 대신 [CakePHP에서 토큰 사용법] (http://www.dereuromark.de/2010/06/25/tools-plugin-part1-codekey/)을 읽으 려합니다. . – mark