суббота, 5 апреля 2025 г.

BinarySerialization, Giga

BinarySerialization, Giga

https://giga.chat/link/gcsOiYjKbS

BinaryFormatter и связанная с ним бинарная сериализация были исключены из основного дистрибутива .NET Core начиная с версии .NET 5.

Это было сделано по соображениям безопасности, так как бинарная сериализация считалась уязвимой для атак,

связанных с десериализацией незащищенных данных.

История исключения BinaryFormatter:

  1. До .NET Core 3.1: BinaryFormatter был доступен и использовался для бинарной сериализации.
  2. .NET 5: BinaryFormatter был удален из основной поставки .NET, но остался доступным через отдельный NuGet-пакет:
  3. System.Runtime.Serialization.Formatters.
  4. .NET 6 и новее: BinaryFormatter остается доступным через тот же NuGet-пакет,
  5. однако его использование настоятельно не рекомендуется из-за потенциальных уязвимостей.

Почему исключили BinaryFormatter?

Бинарная сериализация через BinaryFormatter имеет ряд серьезных недостатков с точки зрения безопасности:

  • Уязвимость к атакам на десериализацию: Злоумышленник может передать вредоносные данные,
  • которые приведут к выполнению произвольного кода при десериализации.
  • Неопределенность формата данных: Формат сериализованных данных может меняться от версии к версии,
  • что делает его ненадежным для долгосрочного хранения данных.
  • Производительность: BinaryFormatter медленнее и менее эффективен по сравнению с современными форматами сериализации,
  • такими как JSON или Protobuf.

Альтернативы BinaryFormatter:

Если тебе нужна сериализация данных, существуют более безопасные и эффективные альтернативы:

  1. JSON: Использование форматов, таких как JSON, через библиотеки вроде Newtonsoft.Json или System.Text.Json.
  2. Protobuf: Протокол буферов (Protocol Buffers) — эффективный и компактный формат сериализации.
  3. XML Serialization: Сериализация в XML формат, хотя она также имеет свои недостатки.

Комментариев нет:

Отправить комментарий