2014-12-28 2 views
2

암호 해시가 생성되는 방법을 알고 싶습니다.Yii2 암호 해시

// This is my code: 

$email="[email protected]"; 
$password="mypassword"; 

// How to get password_hash variable? 

$user = User::find()->where(['email'=>$email, 'password_hash'=>$password_hash])->one(); 
if(isset($user)){ 
    echo "there is"; 
} else { 
"Sorry!"; 
} 

감사합니다.

public function validatePassword($password) 
{ 
    return $this->PASSWORD === md5($password); 
} 
+0

'User :: find() -> 여기서 (''email '=> $ email,'password_hash '=> $ password_hash) -> one();'이 습관은 SQL 주입으로 보안되지 않습니다. 모델을 찾아 validatePassword 함수를 호출하여 사용자 모델의 유효성을 검사해야합니다. 참조 Pheagey의 대답. –

답변

-4

나는 MD5로 해시를 사용하지만 난 사용자 모델에서 함수를 작성 .

+1

md5는 매우 안전하지 않습니다. 나는 PHP의 새로운 내장 password_hash 함수 나 yii \ base \ Security :: generatePasswordHash를 사용할 것이다. –

+1

이것은 답변입니다 : '$ user = User :: find() -> 여기서 ([ 'email'=> $ email]) -> one(); if (! $ user) { // 잘못된 이메일 elseif (! Yii :: $ app-> security-> validatePassword ($ password, $ user-> password_hash)) { // 잘못된 비밀번호 } else { // Ok } ' – Nedim

+0

... 더 이상이 작업을 수행하지 않는다고 알려 주시기 바랍니다. 내장 된 암호화 방법을 사용하십시오. MD5가 손상 될 것입니다. 간단한 MD4/SHA1 해시는 더 이상 안전한 암호화 형식이 아닙니다. –

0
 
    public function verifyPassword($password) 
    { 
     if(md5($password) === $this->password) 
      return TRUE; 
     else 
      return FALSE; 
     //return Yii::$app->security->validatePassword($password, $this->password); 
    } 

    public function beforeSave($insert) 
    { 
     // hash new password if set 
     if ($this->newPassword) { 
      //$this->password = Yii::$app->security->generatePasswordHash($this->newPassword); 
      $this->password = md5($this->newPassword); 
     } 

     // convert ban_time checkbox to date 
     if ($this->ban_time) { 
      $this->ban_time = date("Y-m-d H:i:s"); 
     } 

     // ensure fields are null so they won't get set as empty string 
     $nullAttributes = ["email", "username", "ban_time", "ban_reason"]; 
     foreach ($nullAttributes as $nullAttribute) { 
      $this->$nullAttribute = $this->$nullAttribute ? $this->$nullAttribute : null; 
     } 

     return parent::beforeSave($insert); 
    } 
+0

MD5는 좋은 선택이 아닙니다. –

+0

^- MD5는 끔찍한 선택입니다. –