.NET 9 - BinaryFormatter移除

1.简单介绍

.NET 9 SDK正式版已经发布, 下载地址是.NET9

同时.NET Conf 2024 大会已经从2024-11-13开始了,感觉Aspire和AI的内容相对挺多的,主题分享演示时候打开的网站大部分都是Blazor制作的。

这次.NET Conf 2024老师也再次说明了一下,

BinarryFormatter is inherely insecure, stop using it

note, BinaryFormatter 存在remote code execution的安全问题

BinaryFormatter 从.NET8开始,已经被标记为Obsolete。.NET9开始已经把BinaryFormatter移除

这边简单记录一下BinaryFormatter在.NET8和.NET9运行的情况

2.具体说明

假定有一个Person类

2.1 .NET8中的BinaryFormatter

2.1.1 修改项目配置文件前

在Visual Studio中编写序列化的代码,发现BinaryFormatter有如下标记

表示BinaryFormatter已经Obsolete了

直接编译代码,是报错的。

2.1.2 修改项目配置文件

这时如果想让代码编译通过且运行正常,需要在项目文件中加上如下配置

复制代码
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

加上上述的配置后,BinaryFormatter的状态如下,并且编译不会报错,但是有Obsolete警告出现

note, 修改配置之后,项目能运行了,不过BinaryFormatter不建议使用

2.2 .NET 9 的中BinaryFormatter

2.2.1 修改项目配置文件前

未修改项目配置文件时候和.NET8一样的, 编译有报错

2.2.2 修改项目配置文件

如果要恢复正常运行,则需要修改项目配置文件,

1)需要加上配置

复制代码
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

2)并且安装nuget package(insecure) - System.Runtime.Serialization.Formatters

如果不安装package,运行项目会出现下错误,

修改后的配置如下图所示,

修改了上面两个配置之后,再次编译项目,发现能编译通过,

不过有BinaryFormatter Obsolete的警告出现

下面是代码编译之后的图片

note, 修改配置之后,项目能运行了,不过BinaryFormatter不建议使用

3.总结

本文简单尝试了一下BinaryFormatter在.NET8和.NET9中的状态。正常项目中,不建议使用。

本文如果哪里有错误的地方,麻烦告之,谢谢谢谢!

相关推荐
Data-Miner9 小时前
大语言模型+智能体AI,122页PPT详解落地应用培训!
人工智能·microsoft·语言模型
2601_9620725510 小时前
李梦娇常识4600问|题库|打印版
sql·华为od·华为·c#·华为云·.net·harmonyos
m0_5474866612 小时前
《C#语言程序设计与实践》 全套PPT课件
c语言·c#·c语言程序设计
叶帆13 小时前
【YFIOs】用C#开发硬件之设备上云
开发语言·unity·c#
IT方大同13 小时前
(嵌入式操作系统)信号量
嵌入式硬件·c#
c++之路13 小时前
备忘录模式(Memento Pattern)
c++·microsoft
Solis程序员14 小时前
MCP (Model Context Protocol):AI应用连接外部世界的标准协议
人工智能·microsoft·agent·skill·mcp
诺未科技_NovaTech14 小时前
上海诺未携手惠灵顿中国,基于微软 Azure 打造 AI 教育生态标杆
人工智能·microsoft·azure·ai教育
z落落14 小时前
C# FileStream文件流读取文件
开发语言·c#
yngsqq14 小时前
排版优化 异形排版
c#