Существует несколько полезных ответов на ТАК относительно предотвращения скота, вызывающего пароль веб-сервиса путем применения регулировки. Я не мог найти хорошие числа, хотя и у меня есть мало экспертных знаний в этой области, таким образом, вопрос:
Сколько попыток обычно требуется к "в лоб" средний пароль 6 или больше символов (без дополнительного знания, которое может помочь, но принимая во внимание, что пароли, вероятно, подвержены атакам с подбором по словарю) и на основе этого, что значимые пределы состоят в том, чтобы относиться к алгоритму регулировки, не разрушая пользовательский опыт?
Это - моя текущая схема:
sleep
использованный каждая выборка страницы входа в систему # of attempts / 5
, таким образом, после 5 запросов с меньше чем минутой между запросами это возьмет> 1 секунда для выборки формы, после 10 запросов> 2 секунды, и т.д.На основе ответов до сих пор, я настроил его для работы как это:
# of requests / 2
секунды. Счетчик сбрасывается после 10 минут никаких действий со входом.2 ^ (# of suspensions + 1) hours
. Это должно привести к быстрому фактическому помещению в черный список непрерывного оскорбления дюйм/с.Я думаю, что эти пределы не должны вредить обычным пользователям, даже, которые регулярно забывают их пароль и пытаются войти в систему несколько раз. Пределы IP должны также работать хорошо с в большой степени пользователями NAT'ed, учитывая средний размер сервиса. Кто-то может доказать это, чтобы быть эффективным или неэффективным с некоторой твердой математикой?:)
Судя по вопросу, кажется, что самая быстрая попытка ввода паролей - 50 в минуту. На основании этого и с использованием случайных 6-значных паролей:
Конечно, словарные атаки будут намного быстрее, но у меня нет данных для этого.
РЕДАКТИРОВАТЬ: Я пытался связать результаты калькулятора Google, подтверждающие это, но ^
, похоже, испортил ссылки здесь.
EDIT2:
Атаки по словарю (из http://www.outpost9.com/files/WordLists.html ):
Последний страшно, но 12 дней - это еще долго. Если вы действительно обеспокоены, вы можете отслеживать каждый неверный пароль, пока пользователь не получит правильный пароль, а затем, если список достигнет более 100 различных попыток, просто заблокируйте IP-адрес и отправьте электронное письмо пользователю.
У вас есть пара хороших элементов управления, но вам действительно стоит затянуть еще больше. Обычный пользователь не должен пропускать авторизацию более пяти раз. Если он это сделает, покажите ему CAPTCHA.
Помните, что вы ни при каких обстоятельствах не должны блокировать учетную запись. Это называется уязвимостью блокировки учетной записи.Это позволяет произвольному пользователю отключать других пользователей от службы (DOS, отказ в обслуживании).
Я много раз подходил к этой проблеме ограничения входа в систему, и мне нравится то, что вы создаете поле неудачных попыток и дату последней неудачной попытки в своей базе данных. Когда кто-то (кто-либо) не может войти в учетную запись X, вы увеличиваете значение неудачных попыток X и обновляете дату последней неудачной попытки. Если количество неудачных попыток превышает Y (например, пять), покажите CAPTCHA для конкретного пользователя. Таким образом, у вас не будет огромной базы данных заблокированных IP-адресов для ограничения формы входа, вместо этого у вас будет всего два дополнительных поля для каждого пользователя. Также не имеет смысла блокировать / ограничивать IP-адреса из-за ботнетов и прокси (как легальных, так и нелегальных). Я полагаю, когда IPv6 войдет в моду, вы будете еще более обречены. Гораздо больше смысла регулировать на основе целевых учетных записей. Таким образом, когда ваша учетная запись X становится целью ботнета, форма входа будет заблокирована с помощью CAPTCHA. Очевидным недостатком здесь является то, что если ваша CAPTCHA не работает ... то же самое происходит и с вашим входом в систему.
По сути, это так:
По сути, это щит, который включается при массированной целевой атаке на определенные учетные записи. Хорошая особенность такого подхода заключается в том, что не имеет значения, владею ли я фермой компьютеров по всему миру - я не могу использовать грубую силу для одной учетной записи, потому что она основана на учетной записи.
Две плохие вещи в том, что если CAPTCHA не работает, у вас ничего не останется. Конечно, вы можете улучшить эту ситуацию, разместив и другие средства защиты. Вторая проблема заключается в том, что если бы у меня была бот-сеть, я мог бы использовать один компьютер для одной учетной записи, и тогда вполне вероятно, что с миллионной компьютерной сетью я взламываю хотя бы одну учетную запись, но этот подход работает только при нецелевых атаках.
Надеюсь, это напомнило вам некоторые мысли.