You need to enable JavaScript to run this app. 修复XXE漏洞时Java 8的XMLInputFactory设置属性报未识别错误
优惠活动
大模型
产品
解决方案
定价
更多

修复XXE漏洞时Java 8的XMLInputFactory设置属性报未识别错误

基本背景
  • 运行环境:Java 8 / SpringBoot v1.3.3.RELEASE
  • 项目情况:存量老旧Java代码库,近期团队引入Sonar代码扫描能力,核心任务是修复扫描出的Critical/Blocker级别安全漏洞
  • 扫描给出的漏洞整改要求:禁用XML解析过程中的外部实体访问
问题详情
  1. 项目中创建XML输入工厂的原有代码非常简单:
    XMLInputFactory factory = XMLInputFactory.newInstance();
    
  2. 按照Sonar给出的通用修复指引,为这个工厂实例追加了如下属性配置:
    factory.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
    factory.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
    
  3. 运行单元测试时直接抛出异常:
    java.lang.IllegalArgumentException: Unrecognized property 'http://javax.xml.XMLConstants/property/accessExternalDTD'
    
  4. 做了对照验证:把完全相同的属性配置用到DocumentBuilderFactory上时,不会出现任何报错,示例代码如下:
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    docBuilderFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");
    docBuilderFactory.setAttribute(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
    
已开展的排查
  • 检索Java官方的公开缺陷记录,查到一个已修复的同类问题:该问题原本关联TransformerFactory组件,和当前遇到的“不支持安全配置属性”现象一致,但未查询到XMLInputFactory组件存在同类公开缺陷记录。
  • 当前需要找到适配这套老旧技术栈的可行临时方案或彻底修复办法。

内容的提问来源于stack exchange,提问作者samme4life

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.03 13:24:07