java中xxe漏洞修复方法
java中禁止外部实体引用的设置方法不止一种,这样就导致有些开发者修复的时候采用的错误的方法
之所以写这篇文章是有原因的!最早是有朋友在群里发了如下一个pdf,

而当时已经是2019年1月末了,应该不是2018年7月份那个引起较大轰动的alipay java sdk的了,我突然虎躯一震,该不是。。。
进去看了一下,果然是我前不久在github给WxJava提的一个cve漏洞(CVE-2018-20318),由于当时我知道这个不是阿里的官方团队(虽然项目当时已经在github上有一万多个颗星了),所以没有过多留意后续动态,结果才除了这么个幺蛾子。

言归正传,我当时发现这个漏洞后,开发人员很快就回复马上修复,于是我没有跟进了,后来才发现开发人员修复的方法有问题,于是有外国佬又提了一个cve。。
漏洞本身没什么好说的就是除了xml字符串时没有禁止引用外部实体,而开发人员第一次修复用的是这个 dbFactory.setExpandEntityReferences(false)
要知道当时官方的xxe漏洞修复方法最早也用了这个(当时阿里修改了不止一次),顾名思义上面就是禁止实体扩展引用,那为什么就不行呢?有人专门分析过,写的文章是特别长,反正我是没看很懂,大概意思是他和sun公司沟通了很久,sun说:“这个属性设置不是你们想的那样,你们都理解错了”,不承认是自己的问题也不改,就这样 这个问题就一直遗留了。
这里将正确的修复方法摆出来:

而dbFactory.setExpandEntityReferences(false) 没什么卵用!!!!
还要说下第二种方法中:XMLConstants.FEATURE_SECURE_PROCESSING ===== "http://xml.org/sax/features/external-general-entites"
这种修复方法是可用的,而在我之前freebuf发表的文章(https://www.freebuf.com/vuls/176837.html)中,我说这种方法不可行。。。
我当时确实是测试过了的,猜测应该是eclipse当时抽风了。。。
java中xxe漏洞修复方法的更多相关文章
- java中substring的使用方法
java中substring的使用方法 str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str ...
- Java中Set的contains()方法
Java中Set的contains()方法 -- hashCode与equals方法的约定及重写原则 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashCode() a ...
- Mysql漏洞修复方法思路及注意事项
[系统环境] 系统环境:Red Hat Enterprise Linux Server release 5.4 (Tikanga) + 5.7.16 MySQL Community Server ...
- [java,2017-05-16] java中清空StringBuffer的方法以及耗费时间比较
java中清空StringBuffer的方法,我能想到的有4种: 1. buffer.setLength(0); 设置长度为0 2. buffer.delete(0, buffer.length() ...
- java中BorderLayout的使用方法
相关设置: 使用BorderLayout布局上下左右中布局5个按键,单击中间的那个按键时就关闭窗口 代码: /**** *java中BorderLayout的使用方法 * 使用BorderLayout ...
- 【Java】Java中常用的String方法
本文转载于:java中常用的String方法 1 length()字符串的长度 String a = "Hello Word!"; System.out.println(a.len ...
- 关于阿里云ECS Centos 5/6/7 Linux Glibc库严重安全漏洞修复方法
日前Linux GNU glibc标准库的 gethostbyname函数爆出缓冲区溢出漏洞,漏洞编号为CVE-2015-0235.黑客可以通过gethostbyname系列函数实现远程代码执行,获取 ...
- Java中Set的contains()方法——hashCode与equals方法的约定及重写原则
转自:http://blog.csdn.net/renfufei/article/details/14163329 翻译人员: 铁锚 翻译时间: 2013年11月5日 原文链接: Java hashC ...
- java中equals和hashCode方法随笔二
前几天看了篇关于java中equals和hashCode方法的解析 1.Object类中的equals方法和hashCode方法. Object类中的equals和hashCode方法简单明了,所有的 ...
随机推荐
- Codeforces Round #443 (Div. 1) C. Tournament
题解: 思路挺简单 但这个set的应用好厉害啊.. 我们把它看成图,如果a存在一门比b大,那么a就可以打败b,a——>b连边 然后求强联通分量之后最后顶层的强联通分量就是能赢的 但是因为是要动态 ...
- 一起学Python——数据类型详解
和学习其他编程语言一样,首先要了解一门语言的数据类型. Python的数据类型有整型.浮点型.字符串.布尔型.日期时间类型.list列表.set集合.tuple元组.dict词典等. 1.整型 就是数 ...
- 斯特林公式 ——Stirling公式(取N阶乘近似值)
- 禁用大陆ip段
https://www.ip2location.com/free/visitor-blocker 有 .htaccess web.config等 以iis为例 打开C:\Windows\System3 ...
- 这篇文章主要介绍了Citrix XenServer 6.1 安装图解教程
本次为使用VirtualBox虚拟机过安装测试机过程,我们在使用Vm(无论是Vbox还是VMware等)我们的CPU都必须可支持Intel-V或AMD-V,并且在VM软件设置和BIOS设置开启虚拟化支 ...
- 理解Python协程:从yield/send到yield from再到async/await
Python中的协程大概经历了如下三个阶段:1. 最初的生成器变形yield/send2. 引入@asyncio.coroutine和yield from3. 在最近的Python3.5版本中引入as ...
- python基础篇_003_函数
python中的函数 1.函数的目的 .避免代码冗余 .增强可读性 2.函数的定义与调用 # 定义函数 使用关键字def """ 1.定义函数: def 函数名(): 函 ...
- Hexo主题yilia增加gitalk评论插件
虽然gitment可以实现评论功能,但是适配方面做的并不好,这里借用GitHub上的gitalk项目用来优化个人博客的评论功能 下面记录自己从gitment到gitalk的替换过程: 1.在layou ...
- java动态代理实现与原理详细分析
关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式 代理模式是常用的java设计模式, ...
- Lesnoe Ozero 2016. BSUIR Open 2016 Finals
A. Street magic 数位DP,设$f[i][j][k]$表示从低到高考虑$x$的后$i$位,$x$和$m$大小关系为$j$,和$n$大小关系为$k$的方案数. #include<cs ...