Подтвердить что ты не робот

Что безопаснее? Должен ли я отправить электронное письмо с URL-адресом, срок действия которого истекает для пользователей до reset их пароля, или я должен отправить новый пароль?

Мне было интересно, какой будет более безопасный вариант, когда пользователи забыли свой пароль.

  • Отправьте случайно сгенерированный новый пароль на адрес электронной почты (все адреса электронной почты в моей базе данных подтвердили, что они работают).

или

  • Отправьте электронное письмо со ссылкой, срок действия которой истекает в течение определенного периода времени, когда пользователь может reset их пароль.

Помимо того, что последний использует дополнительную таблицу, что, по вашему мнению, является более безопасной/лучшей практикой?

4b9b3361

Ответ 1

Если вы отправляете электронное письмо с паролем, это означает:

  • Пароль будет проходить через некоторые сети (незашифрованные) и может быть "замечен"
  • Пароль будет находиться в почтовом ящике пользователя
    • Что можно взломать
    • И только любой, кто имеет доступ к компьютеру, может взглянуть на него.

Итак, отправка пароля по электронной почте не кажется безопасным...


Как пользователь, я бы чувствовал, что мой пароль "безопаснее" со ссылкой, которая содержит какой-то токен и истекает через некоторое время.

То, что часть времени "истекает через некоторое время" важна, btw: она гарантирует, что если кто-то нажимает на ссылку через некоторое время (например, тот, кто обращается к почтовому ящику пользователя), ссылка не будет использоваться для создания новый пароль.


Конечно, это означает, что я не смогу просто "найти в своем почтовом ящике", чтобы найти пароль, но я всегда могу попросить новый, я снова его забыл ^^

Ответ 2

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

Обеспечьте немедленное изменение пароля после использования ссылки/пароля и истечет срок действия ссылки/пароля через 24-72 часа.

Ответ 3

Отправьте электронное письмо со ссылкой, срок действия которой истекает в течение определенного периода времени, когда пользователь может reset их пароль.

Это, безусловно.

E-mail всегда находится в ясном состоянии (возможно, ваше соединение с сайтом не может быть) и может касаться большего количества машин. Храните пароли из электронной почты. Временный токен reset также означает, что если почтовый ящик взломан позже, токен больше не нужен.

Помимо того, что последний использует дополнительную таблицу,

Это не обязательно. Вы можете создать криптографический токен, разрешающий конкретному пользователю ввести reset пароль в течение определенного периода времени; никаких дополнительных данных не требуется.

Пример использования кода аутентификации сообщения на основе HMAC (fancy hashhing):

details= user_id+' '+token_expiry_timestamp
mac= hmac_sha2(server_secret, details)
token= details+' '+mac

затем отправьте token пользователю как часть URL с возможностью клика по почте. Когда вы получите обратный вызов, выясните, что mac должен быть для этого пользователя и время с секретностью на стороне сервера, и проверьте это на прошедшем в Mac. Если он совпадает, это должен быть запрос пароля, который вы подписали ранее.

user_id, token_expiry_timestamp, mac= token split on ' '
details= user_id+' '+token_expiry_timestamp
if hmac_sha2(server_secret, details)!=mac
    complain
else if token_expiry_timestamp<now
    complain
else
    allow password for user_id to be changed

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

Пока URL-адрес не запрашивает пароль или некоторые из них, он по-прежнему лучше, чем случайно отправленный пароль, но только потому, что он не оставляет пароль в виде обычного текста в папке "Входящие".

Другими словами, ссылка уменьшает окно возможностей.

Ответ 7

Я всегда был поклонником установки хэш-кода и предоставления им ссылки.

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

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

К сожалению, реального способа "БЕЗОПАСНО" нет. Вопросы безопасности Булавки могут помочь, но никогда не являются действительно безопасными.

Ответ 8

  • Отправьте им электронное письмо со случайным, одноразовым, пароль.

  • Заставить их изменить пароль при первом приходе.

  • Сообщите им, что они изменили свои пароль.

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

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

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

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

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

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

Ответ 9

Некоторые заявили, что оба эквивалентны - это неверно по следующим причинам:

1) С ссылкой reset, если злоумышленник имеет доступ к электронной почте и, следовательно, использует ссылку reset для смены пароля, они будут предупреждать пользователя, даже если фактическое reset сообщение и уведомления удаляются злоумышленником. С почтовым паролем, если пользователь запрашивает reset, а злоумышленник видит случайный пароль (даже намного позже), злоумышленник может получить доступ к учетной записи пользователя на вашем сайте без предупреждения пользователя.

2) Также, если вы отправляете по почте пароль, у пользователя может возникнуть соблазн повторно использовать пароль на других сайтах, а злоумышленник с доступом к электронной почте имеет доступ к другим сайтам, даже если другие сайты не были уязвимы для учетной записи, восстановления.

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

Несколько других проблем:

Можно ли использовать ссылку несколько раз? Помимо истечения срока действия и наличия непредсказуемого значения (с прикрепленным MAC, чтобы он мог быть проверен без состояния сервера), вы можете захотеть, чтобы внутреннее предупреждение отключилось, если попытка сделать пароль reset в учетной записи несколько раз (зарегистрировать успех/сбой, удаленный IP-адрес, временная метка и т.д.) и прервать сначала и поместить учетную запись в некотором неактивном состоянии.

Было бы неплохо увидеть, насколько сильно происходит злоупотребление, чтобы узнать, нужны ли вам дополнительные защитные механизмы для предотвращения захвата аккаунта через потоки восстановления учетной записи (в зависимости от значения учетной записи).

Также очень важно в этом случае поддерживать актуальность адресов электронной почты и других контактных данных, если вы можете (адреса электронной почты перерабатываются, когда они не используются) и как можно обновлять/добавлять адрес электронной почты или другую такую ​​информацию уведомления.

Как всегда убедитесь, что ваши уведомления (текст, ссылка, целевая страница) не облегчают для фишеров.

Некоторые из этих вопросов, конечно, могут быть не очень важными, если у вас нет большого сайта.

Ответ 10

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

Ответ 11

Хотя я могу повторять некоторые ответы, я чувствую себя вынужденным ответить, потому что у нас недавно были некоторые проблемы с неисправными инструментами для восстановления пароля. Одна из личных учетных записей моего коллектива была скомпрометирована, что позволило взломать наши приложения домена с доменом google. Из-за неустановленных паролей открытого текста и глупых вопросов по восстановлению пароля, которые были googleable другими учетными записями, также были скомпрометированы.

Достаточно сказать, что я сильная приверженность к ссылкам по электронной почте, срок действия которых истекает после 4 часа. Я сидел там в течение 4 часов, заходя в одну из наших учетных записей после получения ссылки, убедившись, что она по-прежнему бескомпромиссна. 24-48 часов было бы слишком долго, чтобы это сделать. 4 часа были слишком длинными. Случайный сгенерированный пароль, который пользователь должен изменить при следующем входе, является вторым, но он полностью зависит от пользователя, который действительно регистрируется. Пароль изменен навсегда, тогда как если пользователь ничего не делает со ссылкой, пароль не будет reset.

Нет идеального решения для преданного человека, который хочет скомпрометировать вашу систему. Есть лучшие решения, чем другие.

Ответ 12

Расширение от решения bobince... Здесь пользователь должен повторно ввести userId и токен на странице пароля reset.

По запросу для страницы reset пароль

urserId = Input userId
token = Randomly generated token (or one time password)
tokenExpire = Decide token expiry date/time
Store in DB tokenExpiry for this urserId
urlToken= MD5 hash value of (urserId + token + tokenExpire)
pwdRestURL = server pwd reset url + "?urlToken=" + urlToken

Send above generated URL and make sure you do not 
    include either of userId or token in email

Display token to user (This is to be used on password reset page)

.

На странице пароля reset (используя вышеуказанный URL pwdRestURL)

urlToken = Token from URL request
userId = Input userId
token = Input token
tokenExpiry = tokenExpiry from DB for this user
resetToken = MD5 hash value of (urserId + token + tokenExpire)
IF
    resetToken == urlToken 
    AND tokenExpiry for user is valid
THEN
    Clear tokenExpiry
    Allow user to change password
ELSE
    Display Error
END IF

.

Преимущества вышеуказанного подхода:

  • Даже если электронная почта - это то, как сети, никто не может reset пароль без знания userId и токена.
  • Токен имеет срок действия
  • Нет четкой тестовой личной информации. ретранслируется по электронной почте

Ответ 13

Все, кроме ceeyajoz, используют ошибочную логику. Его трудно думать о безопасности.

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

Не имеет значения, истекает ли URL с момента взлома электронной почты, хакер может просто запросить другой пароль reset. Если временный пароль изменился, хакер может просто запросить новый. В любом случае вы ввернуты.

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

ИЗМЕНИТЬ Когда я сказал "отправить пароль", это было в контексте OP, где вы отправляете новый случайный пароль.

Ответ 14

Я соглашаюсь с процессом.

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

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