我们已经运行Veracode
,一些.cs
文件原来是安全流Improper Restriction of XML External Entity Reference ('XXE')
几个月前,当在不同的应用程序中遇到相同的问题时,我通过添加以下内容解决了这个问题:
settings.DtdProcessing = DtdProcessing.Prohibit;
现在,应用相同的修复程序并不能解决问题。
我已经尝试了所有可能的解决方案来解决 XXE 问题,但没有帮助。
我也有:
XmlDocument doc = null;
.....
settings.DtdProcessing = DtdProcessing.Prohibit;
settings.XmlResolver = null;
....
doc = new XmlDocument();
doc.XmlResolver = null;
但它也不能解决它。
因此,我遇到了其他提供的创建自定义解析器类的解决方案。
现在,我有以下代码:
XmlDocument doc = null;
using (System.IO.MemoryStream xmlstream = new System.IO.MemoryStream(System.Text.Encoding.Default.GetBytes(dsEQ.GetXml().ToString())))
{
XmlReaderSettings settings = new XmlReaderSettings { XmlResolver = new CustomeResolver() };
settings.DtdProcessing = DtdProcessing.Prohibit;
settings.XmlResolver = null;
using (XmlReader xmlreader = XmlReader.Create(xmlstream, settings))
{
try
{
doc = new XmlDocument();
doc.XmlResolver = null;
doc.Load(xmlreader);
}
catch (XmlException e)
{
Connection.LogError(e.ToString(), e.Message);
}
}
}
这是一个自定义解析器类:
private class CustomeResolver : XmlUrlResolver
{
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
{
return base.GetEntity(absoluteUri, role, ofObjectToReturn);
}
}
在部署更改之前,我想知道我是否以正确的方式使用了该类,如果没有,如何更改它,它会完全解决问题吗?