二进制格式化程序从.NET 9 中移除 -.NET 博客

  • 主要观点:从.NET 9 开始,运行时不再包含BinaryFormatter的实现,其 API 仍存在但实现总是抛出异常,不再设置现有向后兼容性标志就能使用BinaryFormatter,需迁移或选择其他序列化方式。
  • 关键信息

    • .NET Framework不受此变化影响仍包含BinaryFormatter实现,但仍建议停止使用。
    • BinaryFormatter存在安全风险,如 CWE-502“反序列化不受信任数据”。
    • 移除BinaryFormatter的原因是为让客户易做正确之事,避免使用不安全技术,同时提供迁移计划和临时选项。
    • 有两种处理BinaryFormatter移除的选项:迁移远离它或使用兼容包继续使用,但兼容包不被支持且不安全。
  • 重要细节

    • 从.NET Core 1.0 就排除BinaryFormatter,后因客户需求在.NET Core 2.0 又包含,之后逐步在多个项目类型中默认关闭并提供向后兼容选项。
    • 迁移选项包括使用基于文本的 JSON 或 XML 序列化格式,以及基于二进制的 MessagePack 或 Protocol Buffers 等;还可使用NrbfDecoder读取BinaryFormatter负载而不进行反序列化;若无法迁移可安装不支持的兼容包但需注意风险。
阅读 15
0 条评论