説明
信頼できないXMLでDTDの処理と外部リソースの解決を許可すると、外部エンティティを通じてローカルファイルを読み取られたり、サーバー側からリクエストを送信されたりするおそれがあります。DtdProcessing.Parse だけで常に外部アクセスが許可されるわけではなく、XmlResolver の設定も影響します。
想定される影響
- ローカルファイルの漏えい、内部ネットワークへのリクエスト、サービス拒否。
対処方法
DTDの処理を禁止し、XmlResolver を null に設定してください。
例
変更前
csharp
var settings = new XmlReaderSettings {
DtdProcessing = DtdProcessing.Parse,
XmlResolver = new XmlUrlResolver()
};
変更後
csharp
var settings = new XmlReaderSettings {
DtdProcessing = DtdProcessing.Prohibit,
XmlResolver = null
};
解説:
- 変更前: 外部エンティティを許可するパーサーは、ローカルファイルの漏えいやサーバー側からのリクエストにつながるおそれがあります。
- 変更後: 信頼できないXMLを解析する前にDTDの処理を無効にし、
XmlResolverをnullに設定してください。