Как предотвратить DoS-атаку в приложениях ASP.NET MVC?

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

То есть предотвратить частый вызов Action или Controller одним клиентом.

Как я могу это реализовать? Есть ли какой-нибудь пакет, который я могу использовать? как и библиотека AntiXSS.


person Edi Wang    schedule 04.08.2012    source источник
comment
Вы можете разрешить пользователю делать HTTP-запрос только каждые 5 секунд. StackOverflow позволяет вам делать определенные вещи каждые x времени, чтобы сэкономить их пропускную способность.   -  person Alex W    schedule 04.08.2012
comment
comment
@AlexW SO выполняет дросселирование, но этого недостаточно для предотвращения атак DOS, поскольку он основан на IP-адресе, который может быть изменен миллион раз в секунду, очевидно, не мной, а хакером   -  person It's a trap    schedule 23.09.2016
comment
Это не анти-xss, что вы ищете. Вам нужна библиотека защиты от DoS. См. Этот ответ: stackoverflow.com/a/56075128/1679165   -  person tecla    schedule 15.05.2019


Ответы (1)


Большинство этих функций можно найти в диспетчере IIS. Что-то вроде динамических ограничений IP должно помочь. Прочтите Рекомендации Microsoft по предотвращению DoS / атак типа «отказ в обслуживании», это хороший список вещь которую нужно сделать.

Также согласно этому видео, Cloud Flare может предотвратить эти атаки с помощью своего бесплатного сервиса.

person Garrett Fogerlie    schedule 04.08.2012
comment
Работает ли ограничение динамического IP-адреса в веб-ферме с балансировкой нагрузки и без сохранения состояния? Судя по прочитанному мной описанию, это не похоже. Я имею в виду, отслеживает ли модуль запросы IP на нескольких машинах или только на локальной машине? - person Paul Fryer; 30.10.2013
comment
Ограничить запросы по ip в общем случае недостаточно. Если есть тяжелая функция, злоумышленник может использовать общий определенный лимит по IP, чтобы сделать N запросов к этой тяжелой функции, чтобы отключить сервер. Вам необходимо указать ограничение на уровне функции. См. Этот ответ (библиотека API Protector .NET): stackoverflow.com/a/56075128/1679165 - person tecla; 15.05.2019