Замена BinaryFormatter в С# ⇐ C#
Замена BinaryFormatter в С#
В настоящее время я использую BinaryFormatter для сериализации своих объектов (строковых[] и byte[])
BinaryFormatter имеет уязвимости безопасности, когда метод. метод Deserialize может использоваться злоумышленниками в качестве вектора для проведения DoS-атак на потребляющие приложения.
Существует возможность добавить привязку сериализации к BinaryFormatter и реализовать метод к BindToType, где мы можем ограничить типы, которые разрешено десериализовать.
Я ищу альтернативу BinaryFormatter для сериализации и десериализации объектов в моем коде.
{ классная программа { static void Main(string[] args) { string[] cars = { "Вольво", "БМВ", "Форд", "Мазда" }; вар элемент = новый элемент { Имя = "Оранжевый" }; вар байт = SerializeData (элемент); вар deserializedData = DeserializeData (байты); } частный статический байт [] SerializeData (объект obj) { варbinaryFormatter = новый BinaryFormatter(); используя (var MemoryStream = новый MemoryStream()) { binaryFormatter.Serialize(memoryStream, obj); вернуть памятьStream.ToArray(); } } частный статический объект DeserializeData (байт [] байт) { varbinaryFormatter = новый BinaryFormatter { Binder = новый TestSerializationBinder() }; используя (var MemoryStream = новый MemoryStream (байты)) вернуть двоичныйFormatter.Deserialize(memoryStream); } } [Сериализуемый] элемент публичного класса { частная строка _name; общедоступная строка Имя { получить {вернуть _имя; } установить { _name = значение; } } } общедоступный класс TestSerializationBinder: SerializationBinder { общедоступное переопределение типа BindToType (строковое имя сборки, строковое имя типа) { если (typeName.Equals("TestBinder.Item")) тип возврата (Предмет); if (typeName.Equals("System.String[]")) тип возврата (строка []); вернуть ноль; } } }бина```
В настоящее время я использую BinaryFormatter для сериализации своих объектов (строковых[] и byte[])
BinaryFormatter имеет уязвимости безопасности, когда метод. метод Deserialize может использоваться злоумышленниками в качестве вектора для проведения DoS-атак на потребляющие приложения.
Существует возможность добавить привязку сериализации к BinaryFormatter и реализовать метод к BindToType, где мы можем ограничить типы, которые разрешено десериализовать.
Я ищу альтернативу BinaryFormatter для сериализации и десериализации объектов в моем коде.
{ классная программа { static void Main(string[] args) { string[] cars = { "Вольво", "БМВ", "Форд", "Мазда" }; вар элемент = новый элемент { Имя = "Оранжевый" }; вар байт = SerializeData (элемент); вар deserializedData = DeserializeData (байты); } частный статический байт [] SerializeData (объект obj) { варbinaryFormatter = новый BinaryFormatter(); используя (var MemoryStream = новый MemoryStream()) { binaryFormatter.Serialize(memoryStream, obj); вернуть памятьStream.ToArray(); } } частный статический объект DeserializeData (байт [] байт) { varbinaryFormatter = новый BinaryFormatter { Binder = новый TestSerializationBinder() }; используя (var MemoryStream = новый MemoryStream (байты)) вернуть двоичныйFormatter.Deserialize(memoryStream); } } [Сериализуемый] элемент публичного класса { частная строка _name; общедоступная строка Имя { получить {вернуть _имя; } установить { _name = значение; } } } общедоступный класс TestSerializationBinder: SerializationBinder { общедоступное переопределение типа BindToType (строковое имя сборки, строковое имя типа) { если (typeName.Equals("TestBinder.Item")) тип возврата (Предмет); if (typeName.Equals("System.String[]")) тип возврата (строка []); вернуть ноль; } } }бина```
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение