セキュリティ POC を構築および開発しようとしています。このコードは、問題が発生しているため、小さなアプリに抽出したアプリの一部です。
String str = "<?xml version=\"1.0\"?><!DOCTYPE foo[<!ELEMENT foo ANY> <!ENTITY word \"A\">]><foo>&word;</foo>";
System.Xml.XmlDocument xDoc = new System.Xml.XmlDocument();
xDoc.LoadXml(str);
xDoc.Save(@"C:\Temp\xdoc.xml");
xml 文字列に、実際の xml で参照されている DTD エンティティ ワードが含まれているとします。ドキュメントが読み込まれると、DTD が処理されると予想されるため、xml で参照されているエンティティ「単語」を文字列「A」に置き換えます。次に、ドキュメント全体をディスクに書き戻します。ただし、xDoc.xml を調べると。エンティティの拡張/置換は行われていません。
なぜだめですか?