【重要】删除XmlUtil.readObjectFromXml方法,避免漏洞

This commit is contained in:
Looly 2023-02-09 18:31:54 +08:00
parent 8a6fe9a2ab
commit 02e85a80e5
2 changed files with 2 additions and 59 deletions

View File

@ -3,10 +3,9 @@
-------------------------------------------------------------------------------------------------------------
# 5.8.12.M1 (2023-01-19)
# 5.8.12.M1 (2023-02-09)
### 🐣新特性
* 【core 】 XmlUtil.readObjectFromXml增加注入漏洞的警告注释并标识为废弃issue#2857@Github
* 【http 】 HttpGlobalConfig.allowPatch()调用时忽略错误issue#2832@Github
* 【core 】 重构根据file magic number判断文件类型pr#2834@Github
* 【core 】 增加WGS84 坐标与墨卡托投影互转pr#2811@Github
@ -22,6 +21,7 @@
* 【core 】 修复FileUtil的rename在newName与原文件夹名称一样时文件夹会被删除问题issue#2845@Github
* 【core 】 修复IoUtil.readBytes使用SocketInputStream读取不完整问题issue#I6AT49@Gitee
* 【core 】 修复ClassScanner自定义classload无效问题issue#I68TV2@Gitee
* 【core 】 【重要】删除XmlUtil.readObjectFromXml方法避免漏洞issue#2857@Github
-------------------------------------------------------------------------------------------------------------

View File

@ -39,7 +39,6 @@ import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
@ -330,62 +329,6 @@ public class XmlUtil {
return readXML(StrUtil.getReader(xmlStr));
}
/**
* 从XML中读取对象 Reads serialized object from the XML file.<br>
* 注意使用此方法解析不受信任 XML 字符串时可能容易受到远程代码执行攻击<br>
* https://gitee.com/dromara/hutool/issues/I6AEX2
*
* @param <T> 对象类型
* @param source XML文件
* @return 对象
* @deprecated 使用此方法解析不受信任 XML 字符串时可能容易受到远程代码执行攻击废弃
*/
@Deprecated
public static <T> T readObjectFromXml(File source) {
return readObjectFromXml(new InputSource(FileUtil.getInputStream(source)));
}
/**
* 从XML中读取对象 Reads serialized object from the XML file.<br>
* 注意使用此方法解析不受信任 XML 字符串时可能容易受到远程代码执行攻击<br>
* https://gitee.com/dromara/hutool/issues/I6AEX2
*
* @param <T> 对象类型
* @param xmlStr XML内容
* @return 对象
* @since 3.2.0
* @deprecated 使用此方法解析不受信任 XML 字符串时可能容易受到远程代码执行攻击废弃
*/
@Deprecated
public static <T> T readObjectFromXml(String xmlStr) {
return readObjectFromXml(new InputSource(StrUtil.getReader(xmlStr)));
}
/**
* 从XML中读取对象 Reads serialized object from the XML file.<br>
* 注意使用此方法解析不受信任 XML 字符串时可能容易受到远程代码执行攻击<br>
* https://gitee.com/dromara/hutool/issues/I6AEX2
*
* @param <T> 对象类型
* @param source {@link InputSource}
* @return 对象
* @since 3.2.0
* @deprecated 使用此方法解析不受信任 XML 字符串时可能容易受到远程代码执行攻击废弃
*/
@Deprecated
@SuppressWarnings("unchecked")
public static <T> T readObjectFromXml(InputSource source) {
Object result;
XMLDecoder xmldec = null;
try {
xmldec = new XMLDecoder(source);
result = xmldec.readObject();
} finally {
IoUtil.close(xmldec);
}
return (T) result;
}
// -------------------------------------------------------------------------------------- Write
/**