.NETを使用してBinaryFormatter
、Convert.ToBase64String
カスタムオブジェクトをシリアル化<input>
し、Webページの非表示タグに格納しています。
ユーザーがフォームを送信したら、手順を逆にしてカスタムオブジェクトを逆シリアル化します。
var formatter = new BinaryFormatter();
var byteData = Convert.FromBase64String(submittedString);
var ms = new MemoryStream(byteData);
var originalObject = (MyCustomType)formatter.Deserialize(ms);
ギャップのあるセキュリティホール:ユーザーがインスタンスを巧みにシリアル化MyMaliciousType
してbase-64文字列に変換し、それをWebフォームに投稿するとどうなるでしょうか。
デシリアライズを実際に実行する前に、デシリアライズされるタイプが特定のタイプと一致するかどうかを確認する方法はありますか?