c# - 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);
..
..
..
}
解决方案
来自微软文档:
如何修复 XML 违规
不要编写原始 XML。相反,使用对其输入进行 XML 编码的方法或属性。
或者,在编写原始 XML 之前对输入进行 XML 编码。
或者,通过使用 sanitizers 进行原始类型转换和 XML 编码来验证用户输入
您可以做的是使用Load
而不是Parse
配置阅读器设置(请参阅XmlReaderSettings),如下所示:
LockUserXml(string xml)
{
var xmlReader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings() { XmlResolver = null });
var doc = XDocument.Load(xmlReader);
..
..
}
推荐阅读
- c# - 在执行 select 子句之前检查列是否存在
- java - 扩展 JFrame 创建新的 JFrame 对象
- javascript - 在本机反应中使用 map() 列出数组元素
- jquery - 代表面板标题单击到引导手风琴的内部链接
- php - Wordpress 条件添加辅助角色
- android - 确定是否从 FCM 通知调用活动
- javascript - 从数组数据构建可排序的 JQuery UI
- docker-compose - 有没有办法在测试环境中不创建构建文件夹的情况下使用 docker-compose “拉动”和“向上”?
- c# - 这是单例 + 延迟加载吗?
- docker - 有没有办法将 Docker ONBUILD 指令延迟到未来的子图像?