.NET 9 - BinaryFormatter移除

news/2024/11/16 16:25:01 标签: .net, microsoft, 微软, c#, .netcore, asp.net

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中的状态。正常项目中,不建议使用。

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


http://www.niftyadmin.cn/n/5754383.html

相关文章

1 图的搜索 奇偶剪枝

图论——图的搜索_Alex_McAvoy的博客-CSDN博客 语雀版本 1 深度优先搜索DFS 1. 从图中某个顶点 v0 出发&#xff0c;首先访问 v0 2. 访问结点 v0 的第一个邻接点&#xff0c;以这个邻接点 vt 作为一个新节点&#xff0c;访问 vt 所有邻接点&#xff0c;直到以 vt 出发的所有节…

回顾二维数组——数组指针部分

数组指针才真正等同于二维数组名 数组指针&#xff1a; 当运行下面的代码的时候&#xff0c;会有警告&#xff0c;偏移量不同&#xff0c;arr偏移的是整行数组&#xff0c;与注释的p不同&#xff0c;如果p&arr[0][0],p表示的就是依次、连续的12个元素地址&#xff0c;偏移…

sql专场练习(二)(1-5)

第一题 create database yhdb01; show tables ; create table sql2_1(uid int,subject_id int,score int ) row format delimited fields terminated by "\t"; load data local inpath /home/homedata/sql2/sql2_1.txt into table sql2_1; select * from sql2_1;100…

Vue.js 前端框架入门

简介 Vue.js 是一个构建用户界面的渐进式JavaScript框架。本文将带你了解Vue项目的目录结构&#xff0c;启动顺序&#xff0c;并逐步指导你安装必要的环境&#xff0c;以及如何开发一个基础的Vue项目。 需要的环境 Node.js&#xff1a;Vue.js 项目依赖于Node.js&#xff0c;…

Android 中的 Zygote 和 Copy-on-Write 机制详解

在 Android 系统中&#xff0c;Zygote 是一个关键的进程&#xff0c;几乎所有的应用进程都是通过它 fork&#xff08;派生&#xff09;出来的。通过 Zygote 启动新进程的方式带来了显著的性能优势&#xff0c;这得益于 fork 操作和 Linux 中的 Copy-on-Write&#xff08;COW&am…

uni-app用户登录⑫

文章目录 十九、用户登录-账户名密码登录一、前端数据整理二、使用 store 进行用户信息存储 二十、用户登录-手机验证码登录一、验证码处理二、数据发送 十九、用户登录-账户名密码登录 一、前端数据整理 定义发送函数&#xff0c;将用户信息以及本次请求的用户登录类型传递给…

Linux之vim全选,全部复制,全部删除

Linux之vim全选&#xff0c;全部复制&#xff0c;全部删除 Vim中如何全选并复制&#xff1f; &#xff08;区分大小写&#xff01;&#xff01;&#xff01;&#xff09; 全部删除&#xff1a;按esc键后&#xff0c;先按gg&#xff08;到达顶部&#xff09;&#xff0c;然后d…

在uniapp中使用canvas封装组件遇到的坑,数据被后面设备覆盖,导致数据和前面的设备一样

在uniapp开发中使用canvas封装了一个叫cirlceTemp的组件(温度圆环图表) 封装的HTML代码 <template><view class"progress-box" :style"{ width: ${progressWidth}rpx, height: ${progressHeight}rpx }"><canvas class"progress-bg&qu…