gpt4 book ai didi

spring - 使用 JAXB + Spring RESTful Web 服务防止 XXE(外部实体处理)攻击

转载 作者:行者123 更新时间:2023-12-04 00:31:17 24 4
gpt4 key购买 nike

我知道我们可以通过在 JAXB 中将抽象类 XMLInputFactory 中的属性 IS_SUPPORTING_EXTERNAL_ENTITIES 设置为 false 来防止 XXE 攻击。

我也看过这个stackoverflow answer .

我的问题是,

如何创建 XMLInputFactory 实例并在 spring 应用程序加载时将此 IS_SUPPORTING_EXTERNAL_ENTITIES 属性设置为 false。那个特定的 XMLInputFactory 实例应该只用于所有使用 javax.xml.bind.annotation 包的类的所有 JAXB 转换。

最佳答案

Spring 使用 RequestMappingHandlerAdapter,它是一个 AbstractHandlerMethodAdapter,它支持具有签名的 HandlerMethods -- 方法参数和返回类型,在 @RequestMapping 中定义。

有 7 个 HttpMessageConverters,其中之一是 Jaxb2RootElementHttpMessageConverter

Jaxb2RootElementHttpMessageConverter 来自 spring-web 包。

从 3.2.8 版本的 spring-web 开始,Jaxb2RootElementHttpMessageConverter 将 processExternalEntities 设置为 false,这又将 XMLInputFactory 属性 IS_SUPPORTING_EXTERNAL_ENTITIES 设置为 false。

引用:Jaxb2RootElementHttpMessageConverter来自 Spring

答案使用

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>

关于spring - 使用 JAXB + Spring RESTful Web 服务防止 XXE(外部实体处理)攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com