Некоторые утверждают, что оба они эквивалентны - это неверно по следующим причинам:
1) С помощью ссылки сброса, если злоумышленник имеет доступ к электронной почте и, следовательно, использует ссылку сброса для изменения пароля, он предупредит пользователя, даже если фактический адрес электронной почты и уведомления будут удалены злоумышленником. С помощью почтового пароля, если пользователь запрашивает сброс и злоумышленник видит случайный пароль (даже намного позже), тогда злоумышленник может получить доступ к учетной записи пользователя на вашем сайте без предупреждения пользователя.
2) Кроме того, если вы отправите пароль по почте, у пользователя может возникнуть соблазн повторно использовать пароль на других сайтах, а злоумышленник, имеющий доступ к электронной почте, будет иметь доступ к другим сайтам, даже если другие сайты не были уязвимы для передачи учетной записи через учетную запись. восстановление.
С помощью случайного пароля, отправляемого по электронной почте, и ссылки сброса, если злоумышленник контролирует электронную почту пользователя, он получает доступ к учетной записи пользователя. Что вы можете сделать в этом случае, зависит от того, сколько дескрипторов у вас есть, например, если у вас есть основной и альтернативный адрес электронной почты, вы должны отправлять уведомления на обе учетные записи электронной почты при запросе и использовании сброса или если они у вас есть телефон, вы можете отправить им текст в дополнение к электронной почте и т. д. Вы можете сами следить за использованием, но это сложнее.
Пара других вопросов:
Может ли ссылка использоваться несколько раз? Помимо истечения срока действия и наличия непредсказуемого значения (с подключенным MAC, чтобы его можно было проверить без состояния сервера), вы можете отключить внутреннее оповещение, если была предпринята попытка многократного сброса пароля для учетной записи (успешная / неудачная регистрация, удаленный IP-адрес, метка времени и т. д.) и прервать после первого и перевести учетную запись в неактивное состояние.
Было бы неплохо посмотреть, как много злоупотреблений происходит, чтобы узнать, нужны ли вам дополнительные защитные механизмы для предотвращения захвата аккаунтов с помощью потоков восстановления аккаунта (зависит от стоимости аккаунта).
Также очень важно в этом случае обновлять адреса электронной почты и другую контактную информацию, если это возможно (адреса электронной почты перерабатываются, когда они не используются), а также как можно обновлять / добавлять адрес электронной почты или другую подобную информацию и уведомления.
Как всегда, убедитесь, что ваши уведомления (текст, ссылка, целевая страница) не облегчают работу фишеров.
Некоторые из этих вопросов, конечно, могут быть не очень актуальны, если у вас большой сайт.