Пароль reset путем отправки временных паролей по электронной почте
Группа в моей компании реализует API REST для единого входа для наших приложений. Эта служба аутентификации имеет функцию пароля reset. Приложение отправляет имя пользователя функции reset. Если это имя пользователя связано с адресом электронной почты, тогда на этот адрес отправляется электронное письмо с временным паролем.
Другим подходом, похоже, являются сайты, которые отправляют по электронной почте безопасную временную ссылку, которая представляет страницу для ввода пользователем нового пароля. Эта страница существует только в течение короткого периода времени.
Я знаю, что письмо не является безопасным протоколом, поэтому люди могут обнюхивать трафик и восстанавливать временный пароль или временную ссылку.
Есть ли существенные причины безопасности, чтобы предпочесть один метод другому? Есть ли другой, более безопасный способ сделать это?
Ответы
Ответ 1
В обоих случаях личная информация (временный пароль или ссылка reset) передается через один и тот же носитель. С этой точки зрения нет никакой разницы в безопасности. Однако ссылка reset имеет несколько преимуществ: вы вынуждаете пользователя выбирать новый пароль. Как только он это сделает, ссылка недействительна и не может быть злоупотреблена. Временные пароли, напротив, имеют тенденцию быть не такими временными, как вам нравится. Даже если вы вынудите пользователя выбрать новый пароль при следующем входе в систему, он, скорее всего, снова войдет в временный.
Кроме того, вы можете зарегистрировать IP-адрес того, кто использует ссылку reset, поэтому, если необходимо, по крайней мере, что-то передать властям.
Ответ 2
Есть ли существенные причины безопасности, чтобы предпочесть один метод другому?
Да. Если вы пройдете маршрут временного пароля, то любой может раздражать дерьмо пользователя, постоянно нажимая на ссылку reset и помещая этот адрес электронной почты пользователя. Если вы используете пароли reset, пользователь может просто игнорировать их и удалять письма.
Ответ 3
На самом деле не лучший способ для широкой публики. Если это внутреннее приложение, вы можете отправить по электронной почте зашифрованные электронные письма, которые пользователи должны декодировать с помощью PGP, но это никогда не будет летать для внешних пользователей, если у вас нет очень дорогостоящего нишевого продукта.
Если электронная почта отсутствует, вам придется использовать что-то вроде вопросов безопасности, но у них есть свои (более важные, на мой взгляд) проблемы. Проблемы включают в себя:
- угадываемы. Такие вопросы, как "любимый цвет", довольно восприимчивы к угадыванию общих вариантов, таких как "красный", "синий", "зеленый" и т.д.
- обнаружимого. Многие из них связаны с профилем Facebook/MySpace/Twitter/Flickr или иным способом для Google.
- забывающимися. Я выбрал "любимое место отдыха", а затем через год или два не смог вспомнить, что я выбрал.
- Трудно разобрать. Если я наберу "Святой Павел" для названия города, но позже вернусь с "Святым Павлом", это будет принято?
Ответ 4
Существует много более безопасных способов для пароля reset. Все они очень неудобны для ваших пользователей и дорогие в обслуживании. Каждый пользователь отправляет вам образец ДНК и отпечатки пальцев, а затем требует, чтобы они отображались лично для проверки, должны помочь с вашей безопасностью. Я удивлен, что ваша совершенно секретная организация позволяет вам получить рекомендации по безопасности в stackoverflow. Все шутите в сторону, насколько безопасно ваше приложение? Удастся ли нападающим сбросить ваши пароли пользователей, а затем получить доступ к их электронной почте?
XKCD всегда говорит, что лучше http://xkcd.com/538/