gpt4 book ai didi

java - XML 外部实体引用的不当限制 (CWE ID 611)(6 个缺陷)

转载 作者:行者123 更新时间:2023-12-02 00:31:36 26 4
gpt4 key购买 nike

该产品处理 XML 文档,该文档可以包含带有解析为外部文档的 URL 的 XML 实体的预期控制范围,导致产品将不正确的文档嵌入到其输出中。
默认情况下,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();
}
}
}

最佳答案

这是获取解决方案的一个很好的引用:https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html#java

例如,在您的情况下,您只需将这两个属性添加到 XMLInputFactory 和流读取器:

        final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
// These 2 properties are the key
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
xmlInputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
// Your stream reader for the xml string
final XMLStreamReader xmlStreamReader = xmlInputFactory
.createXMLStreamReader(new StringReader(yourXMLStringGoesHere));
final NsIgnoringXmlReader nsIgnoringXmlReader = new NsIgnoringXmlReader(xmlStreamReader);
// Done with unmarshalling the XML safely
final Item item = (Item) unmarshaller.unmarshal(nsIgnoringXmlReader);

这也应该通过 Veracode 扫描,没有任何 XXE 问题。

希望有帮助

关于java - XML 外部实体引用的不当限制 (CWE ID 611)(6 个缺陷),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58010289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com