Rails - Восстановление пароля - PullRequest
3 голосов
/ 04 января 2012

Этот вопрос может быть немного абстрактным, но мне было интересно, что является лучшим / стандартным методом для восстановления пароля. Я пытаюсь реализовать это в своем коде прямо сейчас, но метод, который я начинаю использовать, кажется немного капризным / сбивающим с толку, и я хотел знать, каков "Rails-способ" сделать это. Есть предложения?

1 Ответ

6 голосов
/ 04 января 2012

Пароли обычно следует хэшировать (в идеале с солью), а не шифровать, чтобы их нельзя было расшифровать.Затем, чтобы проверить, правильно ли пользователь ввел свой пароль, вы берете все, что они ввели, и используете ту же самую соль и хэш-функцию, и смотрите, соответствует ли она хэшу, который у вас есть в базе данных.Кстати, пароли не могут быть восстановлены.Стандартный способ восстановления утерянного пароля:

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

Devise, гем аутентификации для Rails, имеет восстанавливаемую стратегию , которая следует этому шаблону.

Некоторые сайты применяютсядополнительные проверки безопасности, поскольку электронная почта не защищена на 100%. Например, вам может потребоваться, чтобы для получения электронной почты для сброса пароля пользователь отвечал на секретный вопрос (обычно настраивается при созданииучетная запись)

...