Что теперь юзать вместо соли? password_hash

139
24 октября 2018, 17:00

Хочу использовать функцию password_hash. В документации написано:

Предостережение Настоятельно рекомендуется использовать автоматическую генерацию соли. Данная функция самостоятельно создаст хорошую соль, если вы не будете ей мешать подсовывая свою.

Как было замечено выше, опция salt была объявлена устаревшей в PHP 7.0 и будет вызывать соответствующее предупреждение. Поддержка ручного задания соли может быть удалена в более новых версиях.

Как это понимать? Если соль генерируется рандомно, то я получу разный хэш, и как мне потом сравнить с записанным хешем, если они будут отличаться?

Answer 1

Уважаемый @qwabra хотел сказать, что надо использовать password_verify для проверки соответствия хеша паролю, а не обычное "==".

Answer 2

Суть в том, что один и тот-же пароль, может генерировать с разной солью, причем одинаковой так-таковой не будет, так-как, используется привязка к времени.

function password($password, $hash = '') {
    if ($hash) {
        return password_verify($password, $hash);
    } else if ($password) {
        return password_hash($password, PASSWORD_BCRYPT, [
            'cost' => 11
        ]);
    }
}
$password = 'password';
$hashs = [];
for ($i = 0; $i < 3;  ++$i) {
    $hashs[] = password($password);
}
var_dump($hashs);

Вывод (всегда будет разным):

array(3) {
  [0]=>
  string(60) "$2y$11$U.pByOtimdolMwM0ltXYvO3lM/ottr0W5qGLcYHhGdL1ql1OndtEC"
  [1]=>
  string(60) "$2y$11$ZnmQz1hiZkvpdO5RXM5qCeY9N8LVgt5b6ONGBGfr4ZQxmd5WTdGDW"
  [2]=>
  string(60) "$2y$11$I5p4vJScXYgea1invjg3F..4zC.5xNSqbflNTS/RxfpyFJ2lUZ/8W"
}

Проверяем:

foreach($hashs as $hash) {
    var_dump(password($password, $hash));
}

Вывод:

bool(true)
bool(true)
bool(true)

Это значит. что все 3 хеша равны password.

READ ALSO
Проверка на пользователя в rules yii2

Проверка на пользователя в rules yii2

Как проверить что пользователь зарегистрирован и вошел по Yii::$app->user->identity->id?

182
Bitrix Скрипт не работает через phinx

Bitrix Скрипт не работает через phinx

Есть такой скрипт который сам по себе прекрасно отрабатываетОднако через phinx он создает только новый тип инфоблока

152
PHPStorm по FTP загружает файл не полностью

PHPStorm по FTP загружает файл не полностью

Загружаю php-файл по ftp через phpstorm - затем открываю этот файл в панели управления ispmanager и вижу что загрузилась только половина файлаФайл размером...

144
Не форматирует текст на странице bootstrap markdown

Не форматирует текст на странице bootstrap markdown

Такая проблема, у меня есть переменная где хранится комментарий он берется с базыecho commit; Прикол в том что в привью самого редактора все прекрасно...

168