当前位置: 首页 > news >正文

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

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


http://www.mrgr.cn/news/75283.html

相关文章:

  • AI制作ppt
  • 大语言模型理论基础
  • 细说STM32单片机USART中断收发RTC实时时间并改善其鲁棒性的另一种方法
  • Java中的集合
  • LeetCode【0017】电话号码的字母组合
  • 刘知远LLM——大模型微调:prompt-learningdelta tuning
  • 【AI日记】24.11.14 复习和准备 RAG 项目 | JavaScript RAG Web Apps with LlamaIndex
  • from sklearn.preprocessing import Imputer.处理缺失数据的工具
  • vue渲染模板遇到多层属性访问
  • 【MYSQL】主从复制机制(图解)
  • HarmonyOS下的后台进程管理机制
  • 计算机毕业设计Python+大模型农产品推荐系统 农产品爬虫 农产品商城 农产品大数据 农产品数据分析可视化 PySpark Hadoop
  • Redis 高并发缓存架构实战与性能优化
  • Android 6年经验面试总结 2024.11.15
  • 如何绑定洛谷账号
  • pip install pyaudio安装报错ERROR: Failed building wheel for pyaudio解决
  • 【Nginx】反向代理Https时相关参数:
  • Java函数式编程学习笔记
  • 子网划分学习
  • JVM详解:类的加载过程
  • 2023_Spark_实验十五:SparkSQL进阶操作
  • SpringCloud Gateway网关路由配置 接口统一 登录验证 权限校验 路由属性
  • 日志:中文 URI 参数乱码之 encodeURI、encodeURIComponent、escape 作为 Ajax 中文参数编码给 ASP 的记录
  • 爆肝线程池底层源码,高并发精进之路!
  • 相交链表
  • 曹操为什么总是亲征