Я много искал, но до сих пор не понимаю, означает ли использование 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(...){...}
В моих методах ресурсов я могу получить доступ к списку bean-компонентов JAXB, для которых я не указываю размер (я не знаю, можно ли проверить размер на этом этапе, чтобы избежать получения больших запросов - если это возможно , это будет большая помощь, если кто-нибудь подскажет!), поэтому я боюсь, что злоумышленник может отправить последовательные и большие запросы (мой нормальный размер запроса должен быть меньше 6 bean-компонентов!) и привести к отказу в обслуживании - я я только начинаю изучать риски безопасности и справляться с ними, моя первая попытка!
Я проверю размер в теле метода обработчика запросов, после того как запрос будет полностью получен сервером. Это достаточно?
В документах Grizzly говорится, что у него хорошее управление буфером (может быть, я смешиваю переполнение буфера с отказом в обслуживании), но я не знаю, нужно ли мне устанавливать какие-либо настройки или он защищает по умолчанию?
РЕДАКТИРОВАТЬ:
Я получил хороший ответ на часть своего вопроса, но я все еще ищу некоторые подсказки, особенно о гризли или джерси, и есть ли единая точка входа, в которой я могу сделать некоторые проверки для всех входящих запросов?
Спасибо!