05.04.2020, 10:31
|
#2
|
Пользователь
Регистрация: 03.01.2014
Сообщений: 5
Отблагодарили 0 раз(а)
Рейтинг мнений:
|
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.
|
|
|