Ключ электронной почты для сброса пароля с истекшим сроком действия

Каков стандарт в отношении истечения срока действия ключей сброса пароля, отправленных по электронной почте?

Мое приложение создает 30-символьный буквенно-цифровой ключ, который добавляется к URL-адресу: http://site.com/reset/keygoeshere

Ключ удаляется из учетной записи пользователя после сброса пароля.

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

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

Например, я просто щелкнул ссылку сброса с Facebook, которая была отправлена ​​​​3 дня назад, и она все еще работала.

Необходимо ли истечение срока действия ключей сброса пароля с точки зрения стандартной практики? Если да, то как долго ключ должен оставаться «свежим»?


person F21    schedule 18.02.2012    source источник


Ответы (3)


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

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

person Endophage    schedule 18.02.2012

Несколько заметок:

  1. Когда будет достигнут URL-адрес сброса, сохраните ключ в файле cookie и немедленно перенаправьте его, чтобы его нигде не было в реферере. Файл cookie должен истечь при закрытии браузера и должен быть явно удален при сбросе пароля.
  2. Я делаю 3-часовой сброс для своего сервиса, и я думаю, что даже это слишком много времени. 30 минут даже было бы нормально.
  3. Ссылка для сброса пароля не совсем небезопасна. Если ваша служба хранит какие-либо данные кредитной карты, обмен валюты или личную информацию, вам следует подумать о включении некоторых контрольных вопросов.
person Jordan    schedule 18.02.2012

Насколько я понимаю, оба необходимы, иначе возникнут серьезные проблемы с безопасностью. нормально для меня, я держу только 4 часа.

person Sean    schedule 18.02.2012