首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Veracode XML外部实体引用(XXE)

Veracode XML外部实体引用(XXE)
EN

Stack Overflow用户
提问于 2015-06-22 19:29:37
回答 2查看 13.8K关注 0票数 7

我在我的veracode报告中得到了下一个发现:不适当地限制XML外部实体引用('XXE') (CWE ID 611)引用下面的代码

..。

代码语言:javascript
复制
  DocumentBuilderFactory dbf=null;      
  DocumentBuilder db = null;    
  try {         
        dbf=DocumentBuilderFactory.newInstance();  
        dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); 
        dbf.setExpandEntityReferences(false); 
        dbf.setXIncludeAware(false);        
        dbf.setValidating(false); 
        dbf.newDocumentBuilder();   
        InputStream stream = new ByteArrayInputStream(datosXml.getBytes());
        Document doc = db.parse(stream, "");            

..。

我一直在研究,但我没有找到这个发现的原因,也没有找到让它消失的方法。你能告诉我怎么做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-09 16:39:44

你有没有看过关于XXE的OWASP指南(https://www.owasp.org/index.php/XML(XXE%29_Processing)?

您没有禁用您应该禁用的3个功能。最重要的是第一个:

代码语言:javascript
复制
dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
dbf.setFeature("http://xml.org/sax/features/external-general-entities", false);
dbf.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
票数 9
EN

Stack Overflow用户

发布于 2020-11-04 23:01:24

背景:

XXE攻击是围绕使用外部数据类型定义(DTD)定义任意实体的XML语言功能以及读取或执行文件的功能构建的。

下面是一个包含DTD声明的XML文件示例,当处理该声明时,可能会返回本地“/etc/passwd”文件的输出:

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE test [
    <!ELEMENT test ANY >
    <!ENTITY xxe SYSTEM "file:///etc/passwd" >]>

缓解:

要避免利用XEE漏洞,最好的方法是禁用从外部源加载实体的功能。

现在,禁用DTD的方法将根据所使用的语言(Java、C++、.NET)和所使用的XML解析器(考虑到Java语言的DocumentBuilderFactory、SAXParserFactory、TransformerFactory等)而有所不同。

下面两个官方参考提供了关于如何实现相同目标的最佳信息。

https://rules.sonarsource.com/java/RSPEC-2755

https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.md

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30978855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档