Я использую .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, а затем отправляет это в веб-форму.
Есть ли способ узнать, соответствует ли десериализуемый тип заданному типу до фактического выполнения десериализации?