XML实体注入漏洞修复方案
漏洞等级:高危
漏洞类型:XML实体注入
漏洞描述:XML实体注入漏洞(XXE漏洞)是指在应用程序解析XML输入时,未禁止外部实体加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起DoS攻击等危害。漏洞通常出现在可以上传XML文件的位置,未对上传的XML文件进行过滤,导致可上传恶意XML文件。
具体修复方案:
1. 需要将poi jar包升级到4.1.2版本,当前使用的版本是3.16。
2. 升级完jar包后,代码中引入的相关方法及属性会报错,需要手动调整这些错误。
以下是3.6及以下的版本显示:
更高版本是这样的:
3. 调整完成后可以启动成功,但是上传文件依然会报错,错误信息如下:
Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.apache.xmlbeans.XmlOptions.setEntityExpansionLimit(I)Lorg/apache/xmlbeans/XmlOptions;
这时候就需要手动排除poi里的xmlbeans,重新引入xmlbeans。注意:xmlbeans只能引入一个版本,不要存在其他版本的xmlbeans,否则仍会报错。
注意:不是pom.xml只引入一个版本就行了,是引用的Maven仓库中只能存在一个版本的xmlbeans。