全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java怎么避免XXE攻击 DocumentBuilderFactory安全配置

Java防XXE攻击关键在于禁用DOCTYPE声明、禁用外部实体展开、禁用外部参数实体,需显式配置DocumentBuilderFactory等解析器相关安全特性并统一加固。

Java中避免XXE(XML External Entity)攻击的关键,是正确配置 DocumentBuilderFactory,禁用外部实体解析和DTD处理。默认配置下,它可能加载远程或本地敏感文件,导致信息泄露、SSRF甚至RCE。

禁用外部实体和DTD解析

这是最核心的安全配置。必须显式关闭setExpandEntityReferences(false)setFeature("http://apache.org/xml/features/disallow-doctype-decl", true),否则即使没写DOCTYPE也可能被绕过。

  • 禁用DOCTYPE声明:调用 factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)
  • 禁止展开外部实体:调用 factory.setExpandEntityReferences(false)
  • 禁用加载外部DTD:补充设置 factory.setFeature("http://xml.org/sax/features/external-general-entities", false)factory.setFeature("http://xml.org/sax/features/external-parameter-entities", false)

使用安全的默认工厂实例

不要直接 new DocumentBuilderFactory(),优先用 DocumentBuilderFactory.newInstance("com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl", null) 或确保JDK版本较新(8u121+、11.0.2+),它们默认启用了部分防护,但仍需手动加固上述特性。

更稳妥的方式是封装一个工具方法,统一返回已加固的 factory 实例,避免每个地方重复漏配。

配合XMLInputFactory等其他解析器一并防护

如果项目还用到 SAXParserFactoryXMLInputFactory(如StAX)或 Unmarshaller(JAXB),同样需要做对应禁用:

  • SAXParserFactory:设置相同 features + setValidating(false)
  • XMLInputFactory:调用 factory.setProperty(XMLInputFactory.SUPPORT_DTD, false)factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false)
  • JAXB:通过 Unmarshaller.setEventHandler(...) 过滤异常,或改用 JAXBContext.createUnmarshaller() 后立即配置底层解析器

考虑替代方案:避免直接解析不可信XML

若业务允许,优先用JSON替代XML;若必须处理外部XML,可先用白名单正则或轻量级校验器预筛内容,再交由加固后的DOM解析。对已知结构的XML,也可用XSD校验+严格模式进一步约束。

不复杂但容易忽略——关键就三步:禁DOCTYPE、禁实体展开、禁外部参数。配齐了,XXE基本防住。


# java  # js  # json  # apache  # 工具  # win  # 一加 


相关文章: C++如何编写函数模板?(泛型编程入门)  广州营销型建站服务商推荐:技术优势与SEO优化解析  c# 在ASP.NET Core中管理和取消后台任务  如何快速选择适合个人网站的云服务器配置?  宝塔面板如何快速创建新站点?  如何使用Golang table-driven基准测试_多组数据测量函数效率  学校建站服务器如何选型才能满足性能需求?  临沂网站制作企业,临沂第三中学官方网站?  如何在云指建站中生成FTP站点?  音响网站制作视频教程,隆霸音响官方网站?  网站制作多少钱一个,建一个论坛网站大约需要多少钱?  定制建站流程步骤详解:一站式方案设计与开发指南  官网建站费用明细查询_企业建站套餐价格及收费标准指南  太原网站制作公司有哪些,网约车营运证查询官网?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  建站与域名管理如何高效结合?  建站主机选择指南:服务器配置与SEO优化实战技巧  宝塔建站无法访问?如何排查配置与端口问题?  Python如何创建带属性的XML节点  已有域名建站全流程解析:网站搭建步骤与建站工具选择  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  如何在企业微信快速生成手机电脑官网?  建站之星安装需要哪些步骤及注意事项?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何通过VPS建站无需域名直接访问?  建站之星会员如何解锁更多建站功能?  如何通过虚拟主机快速搭建个人网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  IOS倒计时设置UIButton标题title的抖动问题  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  网站制作网站,深圳做网站哪家比较好?  上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?  网站网页制作专业公司,怎样制作自己的网页?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?  建站之星安装路径如何正确选择及配置?  个人网站制作流程图片大全,个人网站如何注销?  ,如何利用word制作宣传手册?  建站主机选虚拟主机还是云服务器更好?  如何用美橙互联一键搭建多站合一网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  常州企业网站制作公司,全国继续教育网怎么登录?  网站插件制作软件免费下载,网页视频怎么下到本地插件?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  江苏网站制作公司有哪些,江苏书法考级官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。