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