解决方案(二)— 将 http://apache.org/xml/features/disallow-doctype-decl 设置为“true”时, 不允许使用 DOCTYPE
注意:该异常发生也可以是其他XML解析器
,这里以XStream
为例。
使用XStream
解析xml文件的时候抛出异常:
: org.xml.sax.SAXParseException;
将功能 “http://apache.org/xml/features/disallow-doctype-decl” 设置为“真”时, 不允许使用 DOCTYPE。
Caused by: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 10; 将功能 "http://apache.org/xml/features/disallow-doctype-decl" 设置为“真”时, 不允许使用 DOCTYPE。at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:257)at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:339)at com.thoughtworks.xstream.io.xml.DomDriver.createReader(DomDriver.java:108)
"http://apache.org/xml/features/disallow-doctype-decl"设为true
:
目的是为了禁用xml中的inline DOCTYPE 声明
,说白了就是禁用DTD
,不允许将外部实体包含在传入的 XML 文档中,从而防止XML实体注入(XML External Entities 攻击,利用能够在处理时动态构建文档的 XML 功能,注入外部实体)。
为了避免XXE injections,应为XML代理、解析器或读取器设置下面的属性:
factory.setFeature("http://xml.org/sax/features/external-general-entities",false);
factory.setFeature("http://xml.org/sax/features/external-parameter-entities",false);
如果根本不需要 inline DOCTYPE 声明
,可直接使用以下属性将其完全禁用
:
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true);
你可能使用的是下面这种方式创建XStream实例,而DomDriver
默认禁用了DTD
,或者是别的什么xxxDriver,如果出现了该异常,都是默认禁用了DTD
,例如:
XStream xstream=new XStream(new DomDriver());//DomDriver默认不支持DTD
你可以使用XppDriver,Xpp3Driver,XppDomDriver等等,默认支持DTD的驱动器
来构造实力。
XStream xstream=new XStream();//默认是 new XppDriver()
XStream xstream=new XStream(new Xpp3Driver());
解决方案(二)— 将 http://apache.org/xml/features/disallow-doctype-decl 设置为“true”时, 不允许使用 DOCTYPE相关推荐
- spring boot 中 log4j2 日志无法加载(Feature 'http://apache.org/xml/features/xinclude' is not recognized.)
Spring boot 1.5.14 版本中使用 log4j2 日志,在 eclipse 中可以打印日志,但是打包成 war 后,直接运行无法将日志输出到日志文件,配置的 log4j2-spring. ...
- 大讲台谈Hive常见的问题及解决方案(二)
大讲台谈Hive常见的问题及解决方案(二) 本文中所涉及到的问题均来自大讲台Hadoop学员的提问,下面是具体问题描述及解决方案,希望对正在学hadoop的学子有所帮助 问题1:hive 中如何处理外 ...
- SOAP协议(二):Apache SOAP介绍
(仙人掌工作室 2001年09月21日 14:53) width="360" scrolling="no" height="300" fra ...
- 2021年大数据HBase(十二):Apache Phoenix 二级索引
全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Apache Phoenix 二级索引 一.索引分类 ...
- Tomcat(二):tomcat配置文件server.xml详解和部署简介
1. 入门示例:虚拟主机提供web服务 该示例通过设置虚拟主机来提供web服务,因为是入门示例,所以设置极其简单,只需修改$CATALINA_HOME/conf/server.xml文件为如下内容即可 ...
- JavaScript——易班优课YOOC课群在线测试自动答题解决方案(二十二)脚本更新3.1
目录 Web安全--易班优课YOOC课群在线测试自动答题解决方案 更新日志 1.实现简单课程视频立刻完成: 2.集成禁止打开控制台解决方案: 3.修复因易班更新导致的一些问题: 4.添加自动刷题时答案 ...
- XML解析(二),DOM解析XML
转载自 XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(二):Apache安装和配置
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 【解决方案 二】---设置mysql5.7编码集为utf8mb4
[解决方案 二]---设置mysql5.7编码集为utf8mb4 参考文章: (1)[解决方案 二]---设置mysql5.7编码集为utf8mb4 (2)https://www.cnblogs.co ...
最新文章
- Opencv实战 | 用摄像头自动化跟踪特定颜色物体
- UIButton 按钮控件-IOS开发 (实例)
- JAVA作业 02 JAVA语法基础
- 1056. Mice and Rice (25)
- scala mysql连接池_Java与Scala的两种简易版连接池
- 信息学奥赛一本通 1129:统计数字字符个数 | OpenJudge NOI 1.7 01
- oracle数据库赋权_oracle数据库删除赋权
- 一起来玩树莓派--在docker内安装conda(python3.6)
- golang日志收集方案之ELK
- IT项目建议书及可行性研究报告撰写格式
- Android Studio 学生课程签到系统
- Cannot resolve com.oracle:ojdbc14:11.2.0.1.0
- JS项目(制作随机选号页面)
- kubeadm部署单Master节点kubernetes集群 1.21.0
- 【快应用】十大手机厂商共推快应用标准
- python中英文对齐_Python中英文对齐终极解决方案
- 支付宝小程序登录PHP
- 基于大型数字视频监控系统解决方案
- opencv函数测试对话框
- python卡方检验关键词,Python卡方检验
热门文章
- [转载] 七龙珠第一部——第008话 龟仙人的龟派气功波
- matlab距离平方和公式推导,lstopt 非线性拟合:相关系数之平方(R^2)和决定系数(DC)计算公式是?...
- html 在图片添加叉号,html5 表单输入时有个小叉号是怎么做的
- 跟我学Spring3-开涛-笔记
- 仓库管理系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 无法访问/opt/module/spark/jars/spa
- Android Studio报错——The device might have stale dexed jars that don‘t match the current version
- yii mysql gii_Yii整合mongodb和mysql 使用mongodb gii
- 写给这批≥30岁的测试工程师 。
- java利用poi导出excel功能-附带图片导出