Лучшая практика против атак по списку паролей с помощью веб-приложений

StackOverflow https://stackoverflow.com/questions/457727

Вопрос

Я бы хотел, чтобы боты не взламывали слабые учетные записи, защищенные паролем. (например, это произошло на Ebay и других крупных сайтах)

Так что я установлю (mem-) кэшированное значение с помощью ip, количества попыток и отметки времени последней попытки (memcache-fall-out).

Но как насчет ботов, пытающихся открыть любую учетную запись одним паролем? Например, бот пробует все 500.000 учетных записей пользователей с паролем & Quot; password123 & Quot ;. Может быть, 10 откроется.

Итак, моя попытка состояла в том, чтобы просто кэшировать ip с попытками и установить для max-попытки значение ~ 50. Я бы удалил его после успешного входа в систему. Таким образом, хороший бот будет входить в систему с действительной учетной записью каждые 49 попыток сбросить блокировку.

Есть ли способ сделать это правильно? Что большие платформы делают с этим? Что я могу сделать, чтобы идиоты не блокировали всех пользователей на прокси с повторной попыткой 50 раз?

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

Это было полезно?

Решение

Я думаю, что вы можете смешать свое решение с капчей:

<Ол>
  • Подсчитайте количество попыток на один IP
  • Если в данный момент слишком много попыток с данного IP-адреса, добавьте captcha к вашей форме входа в систему.
  • Другие советы

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

    Несколько дней назад была относительно хорошая статья о Coding Horror . .

    В то время как код ориентирован на Django, есть несколько действительно хороших обсуждений о лучших методах в Саймон Уиллисон & # 8217; в блоге . Он использует memcached для отслеживания IP-адресов и сбоев входа в систему.

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

    РЕДАКТИРОВАТЬ: Просто чтобы прояснить, это не должно рассматриваться как полное решение проблемы, которую вы пытаетесь решить, но это следует рассматривать в сочетании с некоторыми другими ответами.

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

    С того же IP-адреса: я бы сказал, если вы видите пример " подозрительный " поведение (неверное имя пользователя или несколько действительных учетных записей с неправильными попытками входа в систему), просто заблокируйте вход в систему на несколько секунд. Если это законный пользователь, они не будут против подождать несколько секунд. Если это бот, это замедлит их до такой степени, что это будет непрактично. Если вы по-прежнему видите поведение по IP-адресу, просто заблокируйте его, но оставьте дверь вне диапазона для законных пользователей (позвоните по номеру телефона #x или отправьте этот адрес по электронной почте).

    ОБРАТИТЕ ВНИМАНИЕ: IP-адреса могут быть разделены между ТЫСЯЧАМИ или даже МИЛЛИОНАМИ пользователей !!! Например, большинство / все пользователи AOL отображаются в виде очень небольшого набора IP-адресов из-за сетевой архитектуры AOL. Большинство интернет-провайдеров сопоставляют свои большие пользовательские базы с небольшим набором общедоступных IP-адресов.

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

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

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

    Что является лучшей контрмерой распределенной грубой силы?

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top