2012-11-12 120 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窗體中。

有沒有辦法判斷被反序列化的類型是否與實際執行反序列化之前的給定類型匹配?

回答