我知道我们可以通过在JAXB中将抽象类XMLInputFactory中的属性IS_SUPPORTING_EXTERNAL_ENTITIES设置为false来防止XXE攻击。
我也看过这个stackoverflow answer。
我的问题是
如何创建XMLInputFactory的示例,并在Spring应用程序加载时将此IS_SUPPORTING_EXTERNAL_ENTITIES属性设置为false?该特定XMLInputFactory示例应仅用于使用javax.xml.bind.annotation包的所有类的所有JAXB转换。
1条答案
按热度按时间erhoui1w1#
Spring使用
RequestMappingHandlerAdapter
,它是一个支持HandlerMethods的AbstractHandlerMethodAdapter
,带有在@RequestMapping
中定义的签名--方法参数和返回类型。有7个
HttpMessageConverters
,其中一个是Jaxb2RootElementHttpMessageConverter
Jaxb2RootElementHttpMessageConverter
来自spring-web软件包。从spring-web的3.2.8版本开始,Jaxb 2 RootElementHttpMessageConverter会将processExternalEntities设定为false,而这又会将XMLInputFactory属性IS_SUPPORTING_EXTERNAL_ENTITIES设定为false。
参考:来自Spring的Jaxb2RootElementHttpMessageConverter
答案用途