考虑以下代码:
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方法是否足够?
由于要生成XmlDocument,因此可以依赖DOM方法来为您处理所有转义:
private XmlDocument CreateMessage(string dirtyInput)
{
XmlDocument xd = new XmlDocument();
xd.LoadXml(@"<Message><Request></Request></Message>");
xd["Message"]["Request"].InnerText = dirtyInput;
return xd;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句