【发布时间】:2019-09-19 11:45:58
【问题描述】:
产品处理一个 XML 文档,该文档可以包含 XML 实体,其 URL 可解析为外部文档
超出预期的控制范围,导致产品在其输出中嵌入不正确的文档。
默认情况下,XML 实体解析器将尝试解析和检索外部引用。如果攻击者控制的 XML 可以
提交给这些函数之一,然后攻击者可以访问有关内部网络的信息,本地
文件系统或其他敏感数据。这称为 XML 外部实体 (XXE) 攻击。
什么都没有
package com.integratingstuff.jaxb;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
import com.integratingstuff.pojo.Item;
public class DoUnmarshall {
public static void main(String[] args) {
try
{
JAXBContext jaxbContext= JAXBContext.newInstance(Item.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
String xml = "<?xml version="1.0" encoding="UTF-8"?><item
price="" description="Test description" catalog-number="10"/>";
InputStream inputStream = new
ByteArrayInputStream(xml.getBytes());
Item item = (Item) unmarshaller.unmarshal(inputStream);
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
【问题讨论】: