gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:44:33 25 4
gpt4 key购买 nike

var xDoc = XDocument.Load(fileName);

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

描述

该产品处理一个 XML 文档,该文档可以包含带有解析为外部文档的 URL 的 XML 实体预期的控制范围,导致产品将不正确的文档嵌入到其输出中。默认情况下,XML 实体解析器将尝试解析和检索外部引用。如果攻击者控制的 XML 可以提交给这些功能之一,然后攻击者可以获得有关内部网络、本地信息的访问权限文件系统或其他敏感数据。这称为 XML 外部实体 (XXE) 攻击。

建议

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

我需要做什么来解决它。

最佳答案

如果您没有在 XML 中使用外部实体引用,您可以通过将解析器设置为空来禁用解析器,来自 How to prevent XXE attack ( XmlDocument in .net)

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

如果您希望文档包含实体引用,那么您将需要创建一个自定义解析器并将您期望的列入白名单。 特别是,任何对您无法控制的网站的引用。

关于c# - 如何在 C# 中配置 XML 解析器以禁用外部实体解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32203024/

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