如何检查XML文档不包含任何外部资源

时间:2016-05-03 22:53:24

标签: c# xml dtd xml-dtd

我想检查更好的方法来检查包含外部资源的XML文档。 我在veracode分析期间收到了这个错误。 配置XML解析器以禁用外部实体解析。

我可以将XMLResolve设置为null,但我们也依赖于第三方dll。所以,我想验证xml是否包含任何外部资源并立即拒绝该文件。

我们不会将DTD用于XML文档。 所以这里有两个我能想到的选择。我想两者几乎都是一样的。只是想确定我是否遗漏了任何东西。

//Check for DTD element in XML, if it contains, ignore this document. 
public bool IsValid(string xml)
{
   if (xml.Contains("<!DOCTYPE"))
   {
      return false;
   }
   return true;
}

public bool IsValid(string xml)
{
    XmlReaderSettings xs = new XmlReaderSettings() {DtdProcessing = DtdProcessing.Prohibit};
    try
    {
            XmlReader.Create(xml, xs);
            return true;
    }
            catch (Exception ex)
    {
            return false;
    }
}

此外,这只会解决DTD,我们如何检查实体和模式等其他外部资源?检查所有外部实体的过程是什么?谢谢你的帮助。

0 个答案:

没有答案