Регулирование веб-сервиса CXF - PullRequest
4 голосов
/ 13 мая 2011

Я новичок в CXF, и я хотел бы знать, есть ли у него какой-либо встроенный механизм, который позволил бы ограничить число одновременных вызовов веб-службы, таким образом устраняя возможность DoS-атаки?Что-то похожее на эту особенность WCF?

http://www.danrigsby.com/blog/index.php/2008/02/20/how-to-throttle-a-wcf-service-help-prevent-dos-attacks-and-maintain-wcf-scalability/

1 Ответ

4 голосов
/ 16 мая 2011

CXF имеет некоторую возможность сделать это из коробки.Конечные точки CXF могут иметь фабрику, сконфигурированную на вызывающем устройстве, которое используется для получения вызываемого объекта.Из коробки есть PooledFactory, который может поддерживать пул экземпляров.Он может быть установлен на , а не создавать дополнительные экземпляры сверх максимума и, таким образом, ждать, пока больше не будет освобождено.Это может немного душить вещи.Вы можете настроить это через конфигурацию весны или через аннотацию на импл:

@FactoryType(value=FactoryType.Type.POOLED, args={"25"})

(25 - максимальный размер пула)

Однако, это очень поздно в обработке.К тому времени, когда он туда доберется, весь XML будет проанализирован, объекты jaxb созданы и т. Д. Для DOS вы, вероятно, захотите остановиться раньше.Вы можете внедрить перехватчик, который будет находиться на ранней стадии в цепочке, который будет хранить счет в конечной точке.Увеличение и проверка входящей цепочки, уменьшение исходящей цепочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...