Как защитить функцию сброса пароля? - PullRequest
2 голосов
/ 19 августа 2011

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

Что я могу сделать, чтобы обезопасить эту функцию от этого?Установить лимит действительных писем, отправленных на ip?(Максимум 3 письма было бы хорошо, я думаю)

Ответы [ 4 ]

4 голосов
/ 19 августа 2011

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

2 голосов
/ 19 августа 2011

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

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

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

Наконец, вы также можете установить ограничения на количество запросов на сброс пароля, поступающих с определенного IP-адреса (это атака для предотвращения DoS и не будет работать против DDoS-атак). Само собой разумеется, но связанные учетные записи не должны быть отключены тем временем, если была предпринята попытка сбросить пароль. Это позволит активировать успешную DoS-атаку, при которой злоумышленник может отключить учетные записи, просто отправив запросы на сброс пароля к известной базе данных идентификаторов электронной почты. При установлении лимита вам придется учитывать прокси-серверы интернет-провайдера, иначе вы можете навредить нескольким клиентам.

1 голос
/ 14 мая 2012

Я видел, как в других веб-ресурсах появилась новая система сброса пароля (намного лучше, чем CAPTCHA), которая предоставляет некоторую форму 2FA (двухфакторная аутентификация), где вы можете подключиться к своей учетной записи, в качестве резервной копии. Пользователь получает одноразовый пин-код, отправленный в его ячейку, и вводит его в него. Нет спам-фильтров, с которыми нужно иметь дело, капчевые формы для перезагрузки и т. Д ... гораздо проще. Предотвращает массовую регистрацию, спам и, как правило, кажется более эффективным и удобным для пользователя, чем альтернативные решения.

0 голосов
/ 19 августа 2011

Будьте осторожны с настройками ограничений по IP.У вас часто есть один интернет-шлюз, который предоставляет доступ большому количеству пользователей через один IP (т. Е. Корпоративные сети).

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

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

...