Предотвратить атаку XXE (обработка внешних объектов) с помощью веб-сервисов JAXB + Spring RESTful
Я знаю, что мы можем предотвратить атаку XXE, установив для свойства IS_SUPPORTING_EXTERNAL_ENTITIES в абстрактном классе XMLInputFactory значение false в JAXB.
Я также видел этот ответ stackru.
Мой вопрос здесь
Как создать экземпляр XMLInputFactory и установить для этого свойства IS_SUPPORTING_EXTERNAL_ENTITIES значение false, когда загружается весеннее приложение. И этот конкретный экземпляр XMLInputFactory должен использоваться только для всех преобразований JAXB для всех классов, которые используют пакет javax.xml.bind.annotation.
1 ответ
Spring использует RequestMappingHandlerAdapter, который является AbstractHandlerMethodAdapter, который поддерживает HandlerMethods с аргументом метода signature и типами возврата, определенными в @RequestMapping.
Есть 7 семи HttpMessageConverter, и один из них - Jaxb2RootElementHttpMessageConverter
Jaxb2RootElementHttpMessageConverter из пакета Spring-Web.
Начиная с версии 3.2.8 Spring-Web и далее Jaxb2RootElementHttpMessageConverter устанавливает для параметра processExternalEntities значение false, что, в свою очередь, устанавливает для свойства XMLInputFactory IS_SUPPORTING_EXTERNAL_ENTITIES значение false.
См.:
Использовать ответ<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>