【问题标题】:Prevent XXE (External Entity Processing) Attack with JAXB + Spring RESTful Web Services使用 JAXB + Spring RESTful Web 服务防止 XXE(外部实体处理)攻击
【发布时间】:2015-04-03 08:09:15
【问题描述】:

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

我也看到了这个stackoverflow answer

我的问题是,

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

【问题讨论】:

    标签: spring web-services security jaxb javax.xml


    【解决方案1】:

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

    一共有 7 个 HttpMessageConverter,其中之一是 Jaxb2RootElementHttpMessageConverter

    Jaxb2RootElementHttpMessageConverter 来自 spring-web 包。

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

    参考:

    http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-web/3.2.8.RELEASE/org/springframework/http/converter/xml/Jaxb2RootElementHttpMessageConverter.java?av=f

    回答使用
    <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.2.8.RELEASE</version> </dependency>

    【讨论】:

    • 您的页面未打开,显示“此页面无法正常工作”。它被删除了吗?
    猜你喜欢
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 2016-05-01
    • 2015-10-10
    • 1970-01-01
    • 2012-12-23
    • 2014-10-02
    相关资源
    最近更新 更多