Тема: Stress web + Acis
Показать сообщение отдельно
Непрочитано 05.04.2020, 10:31   #2
Пользователь

Автор темы (Топик Стартер) Re: Stress web + Acis

Мне кажется это должно помочь

Хеширование паролей и авторизация
Для хеширования паролей в PHP существует функция password_hash():

$password = '123456';
$hash = password_hash($password, PASSWORD_BCRYPT);

var_dump($hash);
// string(60) "$2y$10$Vb.pry5vRGNrm6Y79UfBsun/RbXq2.XEGCOMpozrDwg.MNpfxvWHK"
Вторым параметром передаётся алгоритм хеширования. По-умолчанию это указанный нами bcrypt, но я рекомендую указывать его вручную, поскольку базовый алгоритм в будущем может поменяться. Будет грустно, если при очередном обновлении версии PHP на сайте отвалится авторизация.

Для проверки корректности введённого пользователем пароля используется функция password_verify():

<?php
$hash = '$2y$10$Vb.pry5vRGNrm6Y79UfBsun/RbXq2.XEGCOMpozrDwg.MNpfxvWHK';
$password = '123456';

if(password_verify($password, $hash))
echo 'Пароль правильный.';
else
echo 'Пароль неправильный.';
Ещё раз. При регистрации пользователя нужно передать пароль в функцию password_hash(), а полученный хеш сохранить в базу данных.

При попытке авторизации получаем пользователя по его логину и проверяем функцией password_verify(), соответствует ли хеш пароля тому паролю, который ввёл пользователь.

Таким образом, хранить исходный пароль больше нет смысла.

Да, разные алгоритмы хеширования генерируют хеш разной длины, поэтому рекомендуется хранить хеш в поле с типом VARCHAR(255).

Последний раз редактировалось Aleksandr87; 06.04.2020 в 23:44.
Aleksandr87 вне форума Ответить с цитированием