Хэш пароля 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!";  
}

Спасибо.


person Nedim    schedule 28.12.2014    source источник
comment
User::find()->where(['email'=>$email, 'password_hash'=>$password_hash])->one(); Эта привычка не защищает от SQL-инъекций. Мы должны найти модель, а затем вызвать функцию validatePassword для проверки модели пользователя. Ссылка на ответ Фиги.   -  person Ngô Văn Thao    schedule 02.07.2015


Ответы (3)


http://www.yiiframework.com/doc-2.0/guide-security-passwords.html Это то, как пароли обрабатываются в Yii 2. Если вы не эксперт по криптографии, НЕ пытайтесь написать свой собственный.

person David J Eddy    schedule 30.06.2015

Я использую хэш с md5, но я создаю функцию в пользовательской модели.

    public function validatePassword($password)
{
    return $this->PASSWORD === md5($password);
}
person Nuengnapa    schedule 28.12.2014
comment
md5 крайне небезопасен. Я бы использовал либо новую встроенную функцию PHP password_hash, либо yii\base\Security::generatePasswordHash. - person Justin Cherniak; 29.12.2014
comment
Вот ответ: $user = User::find()->where(['email'=>$email])->one(); if(!$user){ // Wrong email } elseif (!Yii::$app->security->validatePassword($password, $user->password_hash)) { // Invalid password } else { // Ok } - person Nedim; 29.12.2014
comment
...Пожалуйста, скажи мне, что больше не делаешь этого. Используйте встроенные методы шифрования. MD5 скомпрометирует вас. Простой хэш MD4/SHA1 больше не является безопасной формой шифрования. - person David J Eddy; 18.08.2015

person    schedule
comment
^- MD5 - ужасный выбор. - person David J Eddy; 18.08.2015