1

我们已经运行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);
    }
}

在部署更改之前,我想知道我是否以正确的方式使用了该类,如果没有,如何更改它,它会完全解决问题吗?

4

0 回答 0