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