Пароли обычно следует хэшировать (в идеале с солью), а не шифровать, чтобы их нельзя было расшифровать.Затем, чтобы проверить, правильно ли пользователь ввел свой пароль, вы берете все, что они ввели, и используете ту же самую соль и хэш-функцию, и смотрите, соответствует ли она хэшу, который у вас есть в базе данных.Кстати, пароли не могут быть восстановлены.Стандартный способ восстановления утерянного пароля:
- Боб вводит свой адрес электронной почты (или имя пользователя или что-то еще), чтобы указать, кто он такой
- «Маркер сброса пароля»генерируется, как правило, длинная строка букв и цифр и каким-то образом сохраняется в базе данных, связанной с Бобом.
- Бобу отправляется электронное письмо с каким-либо образом прикрепленным токеном сброса пароля, обычно в URL (Например,
http://fakesite.com/reset_password?token=long_token_generated_in_step_2
. - Когда Боб посещает этот URL, сайт проверяет, является ли токен сброса действительным, и позволяет Бобу выбрать новый пароль, который затем солится / хэшируетсятак же, как и пароль, который он потерял.
Devise, гем аутентификации для Rails, имеет восстанавливаемую стратегию , которая следует этому шаблону.
Некоторые сайты применяютсядополнительные проверки безопасности, поскольку электронная почта не защищена на 100%. Например, вам может потребоваться, чтобы для получения электронной почты для сброса пароля пользователь отвечал на секретный вопрос (обычно настраивается при созданииучетная запись)