1

アプリによって処理される XML での悪意のある XXE インジェクションから保護しようとしています。したがって、XmlDocument の代わりに XDocument を使用しています。

XML は Web 要求のペイロードを表すため、その文字列コンテンツに対して XDocument.Parse を呼び出します。ただし、XML に含まれる XXE 参照 (&XXE) が、結果で ENTITY xxe の実際の値に置き換えられていることがわかります。

&xxe を置き換えずに XDocument で XML を解析することは可能ですか?

ありがとう

XmlResolver=null編集: forを使用して XML の xxes の置換を回避することができましたXDocument.Load

4

2 に答える 2

0

事前設定されたリーダーでParse使用しようとする代わりに:Load

var xdoc = XDocument.Load(new XmlTextReader(
    new StringReader(xmlContent)) { EntityHandling = EntityHandling.ExpandCharEntities });

MSDN から:

EntityHandling が ExpandCharEntities に設定されている場合、リーダーは文字エンティティを展開し、一般エンティティを EntityReference ノードとして返します。

于 2015-10-21T09:44:49.853 に答える