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方法简单明了,所有的 ...
随机推荐
- [转]Windows下安装storm-0.9.1
来源:https://www.cnblogs.com/liuruitao/p/4669657.html Windows下安装storm-0.9.1的详细步骤如下: 1.确定已经正确安装JDK1.6或J ...
- Git permission denied(public key) 解决方法
1. 在Linux上: # ssh-keygen ##一定用 id_rsa.pub # cat /root/.ssh/id_rsa.pub 2. copy 整个文件内容到剪切板 3. 打开 ...
- 在 Mac OS X 下,如何向 sudoers 文件添加新用户
注: 1.使用待添加的用户名替换"username". 2.以下涉及输入的标点符号均为半角字符,即英文输入法下的标点符号. 以管理员账号密码登录 Mac OS X,打开 Termi ...
- BZOJ.5110.[CodePlus2017]Yazid 的新生舞会(线段树/树状数组/分治)
LOJ BZOJ 洛谷 又来发良心题解啦 \(Description\) 给定一个序列\(A_i\).求有多少个子区间,满足该区间众数出现次数大于区间长度的一半. \(n\leq5\times10^5 ...
- Moonlight Shadow
歌词 Moonlight Shadow 月光幽灵 -- Dana Winner 1. The last that ever she saw him 那是她今生最后一次见到他 2. carried aw ...
- RAID 0 ~ RAID 7
一.RAID解析1.RAID 0(1)将几块磁盘并行组合,横向写数据(2)并发IO,写数据最快缺点:不提供数据冗余,如果其中一块磁盘废掉,则数据全毁详细:条带深度大时,一次IO只能从一块磁盘上读取,无 ...
- Android系统源代码目录结构 “Android源代码”“目录结构”
在讲述Android源码编译的三个步骤之前,将先介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Android源代码的位置. Android源代码顶层目录结构如下所示: ├ ...
- 更新node和npm到最新版本
卸载 1.首先卸载nodejs,打开控制面板,然后找到程序卸载: 2.找到npm目录和npmcache 目录,直接删掉(一般情况下会在C:\Users\Caffrey\AppData\Roaming\ ...
- CSS3_盒阴影_倒影_盒子大小可调
1. 盒阴影 会产生一个或者多个阴影 使用: (多个阴影,以逗号隔开) /* (不能为负值) (可以负值) */ /* 水平方向偏移量 垂直反向偏移量 模糊程度 扩散程度 颜色 是否是内阴影; ...
- Linux 中进程的管理
Linux 的进程信号 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能终止 17 STOP 无条件终止运 ...