veracode を使用してコードのセキュリティ分析を行っており、以下のコード、特に Deserialize() が呼び出される場所で XXE の欠陥を示しています。シリアライザが外部エンティティにアクセスできないようにするにはどうすればよいですか。XMLReader の XMLresolver を null に設定する以下の試みは機能しません。
public static T DeserializeObject(string xml, string Namespace)
{
System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(T), Namespace);
MemoryStream stream =
new MemoryStream(Encoding.Default.GetBytes(xml));
XmlReaderSettings settings = new XmlReaderSettings();
// allow entity parsing but do so more safely
settings.DtdProcessing = DtdProcessing.Ignore;
settings.XmlResolver = null;
using (XmlReader reader = XmlReader.Create(stream, settings))
{
return serializer.Deserialize(reader) as T;
}
}
私が欠けている可能性があるもの、または他に試してみるものがあるかどうかを誰かが提案できますか.