我正在尝试将其组合为工作的安全演示,并且我想演示为什么 DTD 实体处理可能是危险的,以及为什么我们要阻止它。我试图让它在更大的意义上工作,但这是我遇到困难的代码。
String str = "<?xml version=\"1.0\"?><!DOCTYPE foo [<!ELEMENT foo ANY> <!ENTITY xxe SYSTEM \"http://www.google.com\" >]><root>&xxe;</root>";
String encoded = System.Web.HttpUtility.UrlEncode(str);
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
xDoc.LoadXml(str)
困难在于,每次我加载我的 xml 文档时,我都会收到一个异常,即不需要 DOCTYPE 令牌。如何启用在 C# 中使用 LoadXml 加载 DTD,使用实体扩展解析我的 DTD?无一例外?