【发布时间】:2014-02-27 13:15:04
【问题描述】:
考虑以下代码:
private XmlDocument CreateMessage(string dirtyInput)
{
XmlDocument xd = new XmlDocument();
string str = @"<Message><Request>%REQ%</Request><Message>";
str = str.Replace("%REQ%", dirtyInput);
xd.LoadXml(str);
return xd;
}
我应该采取哪些步骤来清理/验证这个dirtyInput 字符串(它可能来自不受信任的来源)?
编辑:
为了提供更多上下文,然后(由我)将此 XML“消息”发送到第三方 Web 服务。我最关心的是减轻有人可能会向我传递一个字符串的风险,该字符串可能会利用我的 XML 解析器中的漏洞,甚至可能是目标 [第三方] 端(我正在向其发送此消息)的解析器中的漏洞。很明显,我可以专注于特殊的 XML 字符,如 & 等——我是否还需要担心这些字符的转义/编码形式?可能的欺骗链接中提到的 SecurityElement.Escape 方法是否足以满足此要求?
【问题讨论】:
-
检查您的问题的可能重复项:link.
-
谢谢 - 添加了一个编辑部分来澄清。我确实看到了那个愚蠢的问题,但仍然不确定。