Почему “Забытый пароль” плохо?

Я столкнулся с этим оператором

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

Кто-то может разъяснить, почему забытые пароли являются риском? Я планирую обработать его путем отправления пользователю ссылки в их электронном письме для изменения пароля, но не предоставлю им старый пароль (так как это хешируется так или иначе), и не попросит у них старого пароля при сбросе. Действительно ли там что-то опасно о моем подходе?

14
задан Gordon 21 June 2010 в 08:59
поделиться

7 ответов

Если Чарли может читать электронную почту Алисы, он также может получить доступ ко всем сайтам, предлагающим функцию «потерять пароль».

4
ответ дан 1 December 2019 в 09:59
поделиться

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

Я бы просто скопировал методы крупных игроков, такие как PayPal или Google. Я думаю, им нужно теперь то, что они делают. Наиболее распространенный случай: забыл пароль - получите ссылку на свой адрес электронной почты, где вы можете установить новый или сгенерировать случайный, безопасный (который пользователь немедленно изменит обратно на 1234).

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

3
ответ дан 1 December 2019 в 09:59
поделиться

Ваш подход кажется мне очень безопасным :) Конечно, это должна быть одноразовая ссылка!

Также сообщение / страница «успешно» и «адрес электронной почты не найден» должны совпадать. И иметь анонимный текст.

Например:

«Если ваш адрес электронной почты находится в нашей системе, мы отправили вам электронное письмо»

Таким образом, кто-то не сможет определить, находится ли адрес электронной почты в вашей системе или нет!

2
ответ дан 1 December 2019 в 09:59
поделиться

Ваш подход абсолютно правильный, если вы не храните пароль.

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

Небольшое изменение: хотя может быть трудно поймать их все, вам следует попытаться запретить использование учетных записей электронной почты mailinator (или адресов электронной почты из аналогичных служб), потому что mailinator + забыл пароль = катастрофа.

12
ответ дан 1 December 2019 в 09:59
поделиться

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

Я бы также отправил подтверждение «вы обновили свой пароль» на тот же адрес.

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

2
ответ дан 1 December 2019 в 09:59
поделиться

Отправка пользователю ссылки в электронном письме фактически соответствует приведенным инструкциям.

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

2
ответ дан 1 December 2019 в 09:59
поделиться

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

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

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

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

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

С.

2
ответ дан 1 December 2019 в 09:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: