Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用XmlUrlResolver修复;XML外部实体(XXE)“;攻击?_C#_Xml_Xml Parsing_Veracode - Fatal编程技术网

C# 如何使用XmlUrlResolver修复;XML外部实体(XXE)“;攻击?

C# 如何使用XmlUrlResolver修复;XML外部实体(XXE)“;攻击?,c#,xml,xml-parsing,veracode,C#,Xml,Xml Parsing,Veracode,我们已经运行了Veracode,一些.cs文件的安全流被证明是对XML外部实体引用('XXE')的不正确限制。 几个月前,当在不同的应用程序中遇到相同类型的问题时,我通过添加以下内容解决了该问题: settings.DtdProcessing=DtdProcessing.problem 现在,应用相同的修复方法并不能解决问题 我已经尝试了解决XXE问题的所有可能的解决方案,但都无济于事 我还有: XmlDocument doc = null; ..... settings.DtdProces

我们已经运行了
Veracode
,一些
.cs
文件的安全流被证明是
对XML外部实体引用('XXE')的不正确限制。

几个月前,当在不同的应用程序中遇到相同类型的问题时,我通过添加以下内容解决了该问题:

settings.DtdProcessing=DtdProcessing.problem

现在,应用相同的修复方法并不能解决问题

我已经尝试了解决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);
    }
}
在部署更改之前,我想知道我是否以正确的方式使用了该类,如果没有,如何更改它以及它是否能够解决问题