Алгоритм восстановления пароля

12
ВC
На сайте с 02.02.2006
Offline
459
661

Добрый день! 

Функцию восстановления пароля я планирую реализовать через генерацию нового пароля. Алгоритм предполагается такой:

- Посетитель вводит в форму свою почту;

- Проверяем наличие почты в базе пользователей;

- Если почта не найдена, выводим сообщение  «Пользователь не найден»;

- Если пользователь найден, то:

- генерируем новый пароль, создаем его хеш и записываем в дополнительный столбец password_tmp в строке данной почты;

- генерируем случайный код длиной 32 разряда и записываем его в специальный столбец control в строке данной почты;

- направляем посетителю письмо с новым паролем и сгенерированным кодом. В письме ссылка на подтверждение, в адресе которой присланный код. Сличаем этот код с записанным в базе и при их совпадении переносим хеш пароля из столбца password_tmp в столбец password.       

Нормально так будет?


Mik Foxi
На сайте с 02.03.2011
Offline
1076
#1
норм.
Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
totamon
На сайте с 12.05.2007
Offline
437
#2
в вордпресс все это уже реализовано🤔
Домены и хостинг https://8fn.ru/regru | Дедик от 3000р https://8fn.ru/73 | VPS в Москве https://8fn.ru/72 | Лучшие ВПС, ТП огонь, все страны! https://8fn.ru/inferno | ХОСТИНГ №1 РОССИИ https://8fn.ru/beget
-S
На сайте с 10.12.2006
Offline
Модератор1356
#3
totamon #:
в вордпресс все это уже реализовано🤔

Когда будете делать не только статейник для адсенза, то поймете зачем.

temniy
На сайте с 15.03.2008
Offline
235
#4
А зачем  password_tmp? Пусть юзер сам придумывает новый пароль. 
⭐ Лучший хостинг от 4 евро, VPS от 6 евро, VPN недорого - разные локации - любые карты - скидки до 20% - https://fornex.com/c/ffi2e3/ru/services/
-S
На сайте с 10.12.2006
Offline
Модератор1356
#5
temniy #:
А зачем  password_tmp? Пусть юзер сам придумывает новый пароль. 

Да и не вполне секьюрно слать пароль в открытом виде почтой.

Shelton724
На сайте с 26.05.2011
Online
241
#6
-= Serafim =- #:

Да и не вполне секьюрно слать пароль в открытом виде почтой.

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

-S
На сайте с 10.12.2006
Offline
Модератор1356
#7
Shelton724 #:

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

Многие сервисы как раз шлют просто сгенеренный пароль.

V
На сайте с 26.09.2010
Offline
93
#8
Как минимум, не стоит уведомлять пользователя о том, что такой email не найден в базе (просто пишите уведомление том, что если такой пользователь есть, вы получите на указанный email письмо для восстановления). В целом, очень много лишнего, делаете просто временный токен на смену пароля,  отправляете ссылку, переход по ссылке из почты, проверка токена из ссылки, указание нового пароля, запись хеша нового пароля в бд.
E
На сайте с 01.10.2017
Offline
94
#9
Достаточно просто "письмо для восстановления отправлено по указанному адресу". Если пользователь его не получит, то догадается, что допустил ошибку при вводе адреса.
Домены на продажу: https://p20.ru/collection/domains-for-sale
E
На сайте с 01.10.2017
Offline
94
#10
Автор, используйте отдельную таблицу для восстановления вместо "временных" полей в основной. Ничего не написали про срок жизни ссылки для восстановления. Если не обезопасить в достаточной степени эту функциональность, она будет очевидной лазейкой для взлома учетных записей. Это актуально не только при использовании ввода нового пароля, но и при использовании временного пароля. Временный пароль плох тем, что это усложняет функциональность аутентификации, "завязывает" ее на функциональность восстановления пароля. Кроме того, пользователи часто начинают использовать временный пароль вместо основного (а если вы его удалите через какое-то время, чтобы воспрепятствовать такому его использованию, это может стать очередным "шоком" для пользователя). 32-разрядный токен в любом случае слишком короткий.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий