如何修复不可信数据的反序列化

NAK*_*NAK 7 .net c# serialization

我的实用程序类中有一个通用的反序列化 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);
   }
  }
Run Code Online (Sandbox Code Playgroud)

问候, NAK

Var*_*run 0

使用 XmlReader 代替 FileStream 进行反序列化

//第2行

XmlReader xmlreader = XmlReader.Create(new FileStream(xmlFilePath, FileMode.Open)); 
Run Code Online (Sandbox Code Playgroud)

这是微软解决方案的链接 - CA5369: Use XmlReader for Deserialize

这是二进制反序列化的另一个链接 - CA2300:不要使用不安全的反序列化器 BinaryFormatter