【发布时间】:2018-06-01 11:34:17
【问题描述】:
我的实用程序类中有一个通用的反序列化 C# 代码。下面是代码示例。当我们对代码执行安全扫描时,我们在第 3 行发现了“不可信数据的反序列化”漏洞。xml 文件的反序列化似乎很常见。我不确定我们如何解决这个问题。有人可以指导我吗?
public static T DeserializeXmlFile<T>(string xmlFilePath)
{
try
{
XmlSerializer xs= GetSerializer(typeof(T)); //Line#1
FileStream fs= new FileStream(xmlFilePath, FileMode.Open); //Line#2
var result = (T)xs.Deserialize(fs); //Line #3
fs.Close(); //Line#4
return result; //Line#5
}
catch (Exception ex)
{
LogException("Deserialization exception");
return default(T);
}
}
问候, 纳克
【问题讨论】:
-
XmlSerializer仅反序列化已知类型——通过属性、字段和XmlInclude属性的反射静态可发现的类型。它没有可以加载任意类型的机制(除非你做了一些疯狂的事情,比如here 所示)。所以我不确定如何解决警告。您的“安全扫描”软件是否提供任何指导?你到底在用什么软件? -
您应该将
FileStream fs包装在using语句中,而不是手动关闭它。在如此低的水平上捕获和吞下所有异常似乎......不明智。 -
@dbc,该漏洞的详细信息与此链接中给出的类似 - [link]owasp.org/index.php/Deserialization_of_untrusted_data
标签: c# .net serialization