Grizzly Project заботится о переполнении буфера или атаках типа «отказ в обслуживании»? - PullRequest
0 голосов
/ 14 декабря 2010

Я много искал, но до сих пор не понимаю, означает ли использование Grizzly, что я защищен от этих атак или что мне следует приложить еще больше усилий?

В настоящее время единственное, что я делаю в своемпрограмма заключается в том, что я развертываю свои классы ресурсов (аннотированные @Path - я использую Джерси) в Grizzly, используя следующий код:

final Map<String, String> initParams = new HashMap<String, String>();
initParams.put("com.sun.jersey.config.property.packages","MyServer.resources");
SelectorThread threadSelector;
try{
    threadSelector = GrizzlyWebContainerFactory.create(
 uri, initParams);
    System.out.println("Press enter to stop server...");
    System.in.read();
    threadSelector.stopEndpoint();
}catch(...){...}

В моих методах ресурсов я могу получить доступ к списку JAXBbean-компоненты, для которых я не определяю размер (я не знаю, можно ли проверить размер на этом этапе, чтобы избежать получения больших запросов - если это возможно, будет очень полезно, если кто-нибудь скажет мне!), Поэтому я боюсь, что злоумышленник может отправлять последовательные и большие запросы (мой обычный размер запроса должен быть меньше 6 бинов!) И приводить к отказу в обслуживании - я только начинаю изучать угрозы безопасности и обрабатывать их, мойпервая попытка!

Я проверю размер в теле метода-обработчика запроса, то есть после того, как запрос полностью получен сервером.Достаточно ли этого?

В документах Grizzly сказано, что он имеет хорошее управление буфером (возможно, я смешиваю переполнение буфера с отказом в обслуживании), но я не знаю, следует ли мне устанавливать какие-либо настройки или это выполняетсязащита по умолчанию?

РЕДАКТИРОВАТЬ:

Я получил хороший ответ на часть моего вопроса, но я все еще ищу некоторые намеки, особенно о Гризли или Джерси и есть лиединственная точка входа, в которой я могу сделать некоторые проверки для всех входящих запросов?

Спасибо!

1 Ответ

2 голосов
/ 14 декабря 2010

Если вы используете Java, вы в значительной степени защищены от классических атак с переполнением буфера, если только вы не используете библиотеки собственного кода для обработки информации, получаемой из сети.

С другой стороны, защищая себя от отказасервисных атак обычно требует системного подхода.

РЕДАКТИРОВАТЬ

Под «системным» подходом я подразумеваю тот, который учитывает влияние на пропускную способность сети, инфраструктуру и внутренние серверы, а такжетолько ваш веб-сервер.Например, атака, направленная на пропускную способность вашей сети или DNS, может отключить вас независимо от того, как вы внедрили свой веб-сервер.С другой стороны, кто-то может ориентироваться на аспекты вашего веб-приложения;например, знание того, что конкретный запрос очень дорогой ... или что он теряет ресурсы и в конечном итоге приводит к сбою вашего приложения.

(Я не эксперт в этом. Я просто пытаюсь указать, что просто посмотретьна вашем веб-сервере платформы недостаточно ... если вы действительно заботитесь о защите от DDoS.)

...