我正在使用 .NET BinaryFormatter
,以及序列化自定义对象并将其存储在网页上Convert.ToBase64String
的隐藏标签中。<input>
当用户提交表单时,我会反转反序列化自定义对象的步骤:
var formatter = new BinaryFormatter();
var byteData = Convert.FromBase64String(submittedString);
var ms = new MemoryStream(byteData);
var originalObject = (MyCustomType)formatter.Deserialize(ms);
巨大的安全漏洞:如果用户巧妙地序列化一个实例MyMaliciousType
并将其转换为 base-64 字符串,然后将其发布到Web 表单中会怎样。
有没有办法在实际执行反序列化之前判断被反序列化的类型是否与给定类型匹配?