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

XXE 缓解失败的单元测试

如何解决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 举报,一经查实,本站将立刻删除。