Безопасные способы сбросить пароль или дать старый пароль - PullRequest
8 голосов
/ 02 марта 2010

Какой самый безопасный способ обработки забытых паролей / сброса пароля? Должен ли я отправить пароль пользователю? Если да, то вы заставляете их сбросить его? Или вы позволяете им немедленно восстановить его (не отправляя электронное письмо) и требовать какую-то другую информацию, чтобы убедиться, что это они? Или есть лучший метод?

Ответы [ 3 ]

17 голосов
/ 02 марта 2010

Вы не можете отправить пароль пользователю по электронной почте, потому что вы его не знаете. Вы «хэшировали» его, применяя что-то вроде PBKDF2 или bcrypt для хранения, верно?

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

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

5 голосов
/ 02 марта 2010

Вы не должны отправлять пароли по электронной почте. Вот пошаговый процесс, который я использовал:

  1. Дайте пользователям возможность сброса пароля.
  2. Эта опция сохраняет уникальный токен для пользователя. Срок действия токена истекает (часы, день или дни).
  3. По электронной почте пользователю отправляется ссылка, содержащая токен.
  4. Пользователь нажимает на ссылку по электронной почте.
  5. Если токен существует и срок его действия не истек , ссылка загружает форму нового пароля. Если нет , не загружайте форму нового пароля.
  6. Как только пользователь установит новый пароль, удалите токен и отправьте пользователю электронное письмо с подтверждением.

Пока новый пароль не установлен, старый пароль должен оставаться активным. Не забудьте хешировать и солить пароли!

0 голосов
/ 02 марта 2010

Полагаю, вы собираетесь делать это программно? Или это вопрос к Server Fault?

Одним из способов является отправка ссылки на адрес электронной почты пользователя. Он / она нажимает на ссылку и перенаправляется на вашу безопасную веб-форму, где они сбрасывают пароль.

НЕ пересылайте пароль пользователю

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...