2012-11-12 97 views
1

我使用.NET BinaryFormatter以及Convert.ToBase64String来序列化自定义对象,并将其存储在网页上的隐藏<input>标记中。对BinaryFormatter的消毒输入

当用户提交表单,我再反向的步骤反序列化的自定义对象:

var formatter = new BinaryFormatter(); 
var byteData = Convert.FromBase64String(submittedString); 
var ms = new MemoryStream(byteData); 
var originalObject = (MyCustomType)formatter.Deserialize(ms); 

的巨大的安全漏洞:如果什么用户巧妙序列化的MyMaliciousType一个实例,并把它转换成一个64位的字符串,然后在web窗体中。

有没有办法判断被反序列化的类型是否与实际执行反序列化之前的给定类型匹配?

回答