当前位置: 首页 > 知识库问答 >
问题:

如何配置XML解析器以禁用C#中的外部实体解析

武骁
2023-03-14
var xDoc = XDocument.Load(fileName);

我在一个函数中使用上面的代码来加载一个XML文件。功能方面,它的工作良好,但它是显示以下Veracode缺陷后Veracode检查。

将XML解析器配置为禁用外部实体解析。

我需要做什么来解决它。

共有1个答案

康言
2023-03-14

如果在XML中没有使用外部实体引用,可以通过将解析器设置为null来禁用解析器,参见如何防止XXE攻击(.NET中的XmlDocument)

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.XmlResolver = null;
xmlDoc.LoadXml(OurOutputXMLString);

如果您希望文档包含实体引用,那么您将需要创建一个自定义解析器,并将所期望的内容白列出来。尤其是对您无法控制的网站的任何引用。

 类似资料:
  • 我们对我们的代码进行了安全审计,他们提到我们的代码容易受到外部实体(XXE)攻击。 解释-XML外部实体攻击得益于XML功能,可以在处理时动态构建文档。XML实体允许动态包含来自给定资源的数据。外部实体允许XML文档包含来自外部URI的数据。除非配置为其他方式,否则外部实体会强制XML解析器访问URI指定的资源,例如本地计算机或远程系统上的文件。此行为会使应用程序遭受XML外部实体(XXE)攻击,

  • 我每次都会再次遇到这个错误,尽管我将代码更改为我在网上找到的代码,如下所示:

  • 当我在此程序上运行HP Fortify时: 我得到这个错误: 在ItemServlet中配置的XML解析器。92不会阻止或限制外部实体的解析。这会使解析器受到XML外部实体攻击。 根据这个博客,应该设置以下功能。 但问题是,我的TransformerFactory实例不支持这种方法。

  • 我试图确定.NET核心应用程序是否容易受到XML外部实体(XXE)注入攻击。我读了这个OWASP XXE预防备忘单,它告诉我,例如,在4.5.2之前的.NET Framework版本中,

  • 问题内容: 我目前正在使用DOM解析器来解析XHTML文档,例如: 我的问题是,当我的文档包含一个实体引用时,例如: 我的解析器为包含“€”而不是“€”的内容创建了一个Text节点。这就是说,它正在按预期的方式解析实体(XHTML 1.0 Strict DTD链接到ENTITIES Latin1 DTD,这反过来确定了“€”与“€”的对等)。 问题是,我不希望解析器执行此类操作

  • 在Java中解析XML变得非常简单。大多数代码最终调用DocumentBuilderFactory。newInstance()返回默认情况下易受XXE类攻击的XML解析器。 OWASP文档详细解释了如何配置从返回的XML解析器以防止此类攻击,但如何将其设为默认值? 我的问题是,我正在使用像JDOM2这样的库和其他处理XML的代码,我无法轻松地更改所有这些代码。我如何使安全解析器成为默认解析器? 我