如何解决XXE 缓解失败的单元测试
我有一次安全扫描告诉我代码中的这个问题,但我所做的每一次更改,我的单元测试都失败了。有什么建议吗?
原始代码:
Stream responseStream = await response.Content.ReadAsstreamAsync();
XDocument responseDoc = XDocument.Load(responseStream);
提议的更改,但未通过单元测试:
XDocument responseDoc = null;
using (Stream responseStream = await response.Content.ReadAsstreamAsync())
{
using (XmlReader xmlReader = XmlReader.Create(responseStream,new XmlReaderSettings() { XmlResolver = null,DtdProcessing = DtdProcessing.Ignore }))
{
responseDoc = XDocument.Load(xmlReader);
}
}
即使使用设置为解析的 DTD 设置 XMLSecurityResolver 并将证据设置为在完全可信的环境中工作(根据 Microsoft 定义),测试仍然失败。
System.Security.Policy.Evidence evidence = this.GetType().Assembly.Evidence;
XmlSecureResolver myResolver = new XmlSecureResolver(new XmlUrlResolver(),evidence);
myResolver.Credentials = CredentialCache.DefaultCredentials;
using (XmlReader xmlReader = XmlReader.Create(responseStream,new XmlReaderSettings() { XmlResolver = myResolver,DtdProcessing = DtdProcessing.Parse }))
{
responseDoc = XDocument.Load(xmlReader);
}
我认为最后一个版本基本上会消除安全性并至少通过单元测试,但事实并非如此。还有什么我想念的。我应该使用 XmlReader 以外的其他东西吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。