Каков наиболее безопасный способ обработки забытых паролей / сброса паролей? Следует ли мне отправить пароль пользователю по электронной почте? Если да, то заставляете ли вы их сбросить? Или вы позволите им немедленно сбросить его (без отправки электронного письма) и потребовать некоторую другую информацию, чтобы убедиться, что это они? Или есть способ получше?
Безопасные способы сбросить пароль или вернуть старый пароль
Ответы (3)
Вы не можете отправить пароль пользователю по электронной почте, потому что вы его не знаете. Вы "хешировали" его с помощью применить к нему что-то вроде PBKDF2 или bcrypt для хранения, верно?
Если вы сбросите пароль, не подтвердив его владельцем учетной записи, злоумышленник может отказать владельцу в доступе к своей учетной записи, по крайней мере, до тех пор, пока он не проверит свою электронную почту, используя адрес электронной почты жертвы для запроса сброса.
Метод, достаточно безопасный для многих приложений, - это отправить владельцу учетной записи по электронной почте ссылку, содержащую большое, случайно сгенерированное число. Этот токен должен быть действителен только в течение ограниченного времени. Если владелец хочет сбросить свой пароль, он щелкает ссылку, и это подтверждает его подлинность как владельца учетной записи. Затем владелец учетной записи может указать новый пароль.
Вы не должны отправлять пароли по электронной почте. Вот пошаговый процесс, который я использовал:
- Предоставьте пользователям возможность сбросить пароль.
- Эта опция сохраняет уникальный токен для пользователя. Срок действия токена истекает (часы, день или дни).
- Ссылка отправляется пользователю по электронной почте, которая включает в себя токен.
- Пользователь нажимает на ссылку, отправленную по электронной почте.
- Если токен существует и срок его действия еще не истек, по ссылке загружается форма нового пароля. В противном случае не загружайте форму нового пароля.
- Как только пользователь установит новый пароль, удалите токен и отправьте пользователю электронное письмо с подтверждением.
Пока не будет установлен новый пароль, старый пароль должен оставаться активным. Не забывайте хешировать и солить пароли!
Полагаю, вы собираетесь делать это программно? Или это вопрос о сбое сервера?
Один из способов - отправить ссылку на адрес электронной почты пользователя. Он / она нажимает на ссылку и перенаправляется на вашу безопасную веб-форму, где сбрасывает пароль.
НЕ отправляйте пароль пользователю по электронной почте