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

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

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

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

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

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

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

Ответы [ 8 ]

6 голосов
/ 19 января 2009

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

  1. Подсчет количества попыток на IP
  2. Если в данный момент слишком много попыток с данного IP-адреса, добавьте captcha в форму входа.
5 голосов
/ 19 января 2009

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

3 голосов
/ 19 января 2009

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

2 голосов
/ 19 января 2009

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

1 голос
/ 19 января 2009

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

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

0 голосов
/ 30 января 2009

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

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

0 голосов
/ 19 января 2009

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

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

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

0 голосов
/ 19 января 2009

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

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

...