【重要】删除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

@@ -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
/**