1

セキュリティ 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 を調べると。エンティティの拡張/置換は行われていません。

なぜだめですか?

4

1 に答える 1

2

コードで使用するメソッドのドキュメントには、次のものがあります。LoadXml

このメソッドは、DTD またはスキーマの検証を行いません。検証を行う場合は、Loadメソッドを使用して XmlValidatingReader. XmlDocument読み込み時の検証の例については、を参照してください

記事この記事、および他の多くの記事では、DTD 検証のコード例を提供しています。

于 2013-10-01T22:56:14.970 に答える