基本概念
XMLDecoder用于将XMLEncoder创建的xml文档内容反序列化为一个Java对象,其位于java.beans包下。
影响版本
XMLDecoder在JDK 1.4~JDK 11中都存在反序列化漏洞安全风险。
Demo
import com.sun.beans.decoder.DocumentHandler;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.beans.XMLDecoder;
public class test {
public static void XMLDecode_Deserialize(String path) throws Exception {
File file = new File(path);
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
XMLDecoder xd = new XMLDecoder(bis);
xd.readObject();
xd.close();
}
public static void main(String[] args){
//XMLDecode Deserialize Test
String path = "poc.xml";
try {
XMLDecode_Deserialize(path);
// File f = new File(path);
// SAXParserFactory sf = SAXParserFactory.newInstance();
// SAXParser sp = sf.newSAXParser();
//
// DefaultHandler dh = new DefaultHandler();
// DocumentHandler dh = new DocumentHandler();
// sp.parse(f, dh);
} catch (Exception e) {
e.printStackTrace();