Регулировка попыток входа в систему

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

.element {
  text-indent: -9999px;
  line-height: 0; /* Collapse the original line */
}

.element::after {
  content: "New text";
  text-indent: 0;
  display: block;
  line-height: initial; /* New content takes up original line height */
}

Пример JSFiddle

17
задан Richard Everett 20 February 2009 в 16:31
поделиться

5 ответов

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

1st failed login    no delay
2nd failed login    2 sec delay
3rd failed login    4 sec delay
4th failed login    8 sec delay
5th failed login    16 sec delay

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

См. http://www.codinghorror.com/blog/archives/001206.html

15
ответ дан 30 November 2019 в 10:39
поделиться

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

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

7
ответ дан 30 November 2019 в 10:39
поделиться

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

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

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

Также монитор для того же IP/отличавшегося пользователя и того же пользователя, IP / отличающегося IP.

4
ответ дан 30 November 2019 в 10:39
поделиться

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

Вы, вероятно, используете некоторый тип кэша серверной стороны на Вашем веб-сервере, memcached или подобные. Это - идеальные системы для использования для того, чтобы отслеживать неудачные попытки IP-адресом и/или именем пользователя. Если определенный порог для неудавшихся попыток входа в систему превышен, можно затем решить деактивировать учетную запись в базе данных, но Вы будете сохранять набор чтений и записей к Вашему сохраненному устройству хранения данных для неудавшихся счетчиков входа в систему, которые Вы не должны сохранять.

, При попытке остановить людей от вынуждающей скота аутентификации, система регулировки как Гамбо, предложенный, вероятно, работает лучше всего. Это сделает атаки перебором неинтересными взломщику при уменьшении влияния для законных пользователей при нормальных обстоятельствах или даже в то время как нападение продолжается. Я предложил бы просто считать неудачные попытки IP в memcached или подобный, и если Вы когда-нибудь становитесь целью чрезвычайно распределенной атаки перебором, можно всегда выбирать также начинать отслеживать попытки на имя пользователя, предполагая, что взломщики на самом деле пробуют то же имя пользователя часто. Пока попытка не чрезвычайно распределяется, поскольку в тихом прибытии из исчисляемого количества IP-адресов, первоначальный код IP должен не пустить взломщиков довольно соответственно.

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

Еще одно предложение, которое не отвечает на Ваш вопрос, но несколько связано, состоит в том, чтобы осуществить определенный уровень безопасности пароля на Ваших конечных пользователях. Я не пошел бы за борт с требованием смешанного случая, по крайней мере, x символы, несловарь, и т.д. и т.д. пароль, потому что Вы не хотите прослушивать людей к очень, когда они еще даже не подписались, но просто мешать людям использовать их имя пользователя, поскольку их пароль должен пойти очень длинным путем для защиты сервиса и пользователей против самого бесхитростного †“предположение, почему они называют их "в лоб" ;) †“нападений.

15
ответ дан 30 November 2019 в 10:39
поделиться

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

Если вы вставите задержку с помощью Thread.Sleep (n), вы заблокируете поток пула потоков ASP.NET на время задержка. Этот поток больше не будет доступен для выполнения других запросов. В этом случае простая атака в стиле DOS будет состоять в том, чтобы продолжать отправлять вашу форму входа. В конце концов, каждый поток, доступный для выполнения запросов, будет находиться в спящем режиме (и на увеличивающиеся периоды времени).

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

  1. Попытка аутентификации во время BeginProcessRequest и определение задержки после сбоя
  2. Возвращение IAsyncResult, раскрывающего WaitHandle, который будет запущен после задержки
  3. Убедитесь, что WaitHandle был запущен (или заблокирован до тех пор, пока это было) в EndProcessRequest
10
ответ дан 30 November 2019 в 10:39
поделиться
Другие вопросы по тегам:

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