20
var xDoc = XDocument.Load(fileName);

関数で上記のコードを使用して XML ファイルをロードしています。機能的には問題なく動作しますが、Veracode チェック後に次の Veracode Flaw が表示されます。

説明

この製品は、意図した制御範囲外のドキュメントに解決される URL を持つ XML エンティティを含む可能性のある XML ドキュメントを処理し、製品がその出力に誤ったドキュメントを埋め込む原因となります。デフォルトでは、XML エンティティ リゾルバは外部参照の解決と取得を試みます。攻撃者が制御する XML をこれらの関数のいずれかに送信できる場合、攻撃者は内部ネットワーク、ローカル ファイル システム、またはその他の機密データに関する情報にアクセスできる可能性があります。これは、XML eXternal Entity (XXE) 攻撃として知られています。

推奨事項

XML パーサーを構成して、外部エンティティーの解決を無効にします。

それを解決するために私がしなければならないこと。

4

4 に答える 4

19

XML で外部エンティティ参照を使用していない場合は、リゾルバーを null に設定して無効にすることができます

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.XmlResolver = null;
xmlDoc.LoadXml(OurOutputXMLString);

ドキュメントにエンティティ参照が含まれていると予想される場合は、カスタム リゾルバーを作成し、予想されるものをホワイトリストに登録する必要があります。特に、あなたが管理していないウェブサイトへの言及。

于 2016-06-09T13:17:06.703 に答える
0

この方法を試すことができます:

XmlDocument doc = new XmlDocument() { XmlResolver = null };
System.IO.StringReader sreader = new System.IO.StringReader(fileName);
XmlReader reader = XmlReader.Create(sreader, new XmlReaderSettings() { XmlResolver = null });
doc.Load(reader);
于 2021-05-19T05:09:33.903 に答える