微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XElement.Parse && XDocument.Parse 在 C# 中容易受到 XML 注入

如何解决XElement.Parse && XDocument.Parse 在 C# 中容易受到 XML 注入

下面的代码被 fortify 检测为 XML 注入。请有人帮我解决这个问题。

LockUserXml(string xml)
{
   var doc = XDocument.Parse(xml);
   ..
   ..
}

LocalUserXml(XmlElement root,ExportXmlParameter param)
{
   XElement rootElement = XElement.Parse(root.OuterXml);
   ..
   ..
   ..
}

解决方法

来自Microsoft doc

如何解决 XML 违规问题

  • 不要编写原始 XML。相反,请使用对其输入进行 XML 编码的方法或属性。

  • 或者,在编写原始 XML 之前对输入进行 XML 编码。

  • 或者,通过对原始类型使用消毒剂来验证用户输入 转换和 XML 编码

您可以做的是使用 Load 而不是 Parse 并配置阅读器设置(参见 XmlReaderSettings),如下所示:

LockUserXml(string xml)
{
   var xmlReader = XmlReader.Create(new StringReader(xml),new XmlReaderSettings() { XmlResolver = null });
   var doc = XDocument.Load(xmlReader);
   ..
   ..
}

另见How to prevent XXE attack ( XmlDocument in .net)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。