Моя первая попытка решить уязвимость DoS использовала подход, предложенный Gulzar, который в основном заключается в ограничении количества вызовов, разрешенных с одного и того же IP-адреса. Я думаю, что это хороший подход, но, к сожалению, мой код не прошел тест производительности.
Поскольку мне не удалось заставить группу тестирования производительности изменить свой тест (политическая проблема, а не техническая), я изменил ограничение на количество вызовов, разрешенных в течение настраиваемого интервала. Я сделал настраиваемым как максимальное количество звонков, так и временной интервал. Я также разрешил установить значение 0 или отрицательное число, которое отключает ограничения.
Код, который нужно было защитить, используется внутри нескольких продуктов. Итак, я попросил каждую группу продуктов запустить свои наборы тестов QA и производительности и придумал значения по умолчанию, которые были как можно меньше, чтобы ограничить реальную DoS-атаку, но при этом прошли все тесты.
FWIW, временной интервал составлял 30 секунд, а максимальное количество вызовов — 100. Это не совсем удовлетворительный подход, но он простой и практичный и был одобрен группой корпоративной безопасности (еще одно политическое соображение).
person
David G
schedule
02.11.2008