首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏stcnb

    CA2302:在调用 BinaryFormatter.Deserialize 之前,确保设置 BinaryFormatter.Binder

    有关详细信息,请参阅 BinaryFormatter 安全指南。 规则说明 反序列化不受信任的数据时,不安全的反序列化程序易受攻击。 当 Binder 可能为 NULL 时,此规则查找 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 反序列化方法调用或引用。 无论 Binder 属性如何,如果要使用 BinaryFormatter 禁止任何反序列化,请禁用此规则和 CA2301,并启用规则 CA2300。 何时禁止显示警告 BinaryFormatter 不安全,无法确保安全。 配置代码以进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 的情况下,请不要调用 BinaryFormatter.Deserialize s used.

    1.4K30编辑于 2022-02-26
  • 来自专栏stcnb

    SYSLIB0011:BinaryFormatter 序列化已过时

    由于 BinaryFormatter 存在安全漏洞,从 .NET 5.开始,以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0011。 System.Exception.SerializeObjectState BinaryFormatter.Serialize BinaryFormatter.Deserialize Formatter.Serialize IFormatter.Serialize(Stream, Object) IFormatter.Deserialize(Stream) 解决方法 请考虑使用 JsonSerializer 或 XmlSerializer,而不是 BinaryFormatter 若要详细了解建议的操作,请参阅修复 BinaryFormatter 过时和禁用错误。 禁止显示警告 建议尽可能使用可用的解决方法。

    1.9K10编辑于 2022-01-06
  • 来自专栏stcnb

    CA2301:在未先设置 BinaryFormatter.Binder

    有关详细信息,请参阅 BinaryFormatter 安全指南。 规则说明 反序列化不受信任的数据时,不安全的反序列化程序易受攻击。 当 BinaryFormatter 未设置其 Binder 时,此规则查找 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 无论 Binder 属性如何,如果要使用 BinaryFormatter 禁止任何反序列化,请禁用此规则和 CA2302,并启用规则 CA2300。 有关详细信息,请参阅 BinaryFormatter 安全指南。 限制反序列化的类型。 实现自定义 System.Runtime.Serialization.SerializationBinder。 何时禁止显示警告 BinaryFormatter 不安全,无法确保安全。 配置代码以进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。

    88050编辑于 2022-02-26
  • 来自专栏哲学驱动设计

    在 WCF 中使用高效的 BinaryFormatter 序列化

    本文将定义一个 WCF 终结点行为扩展,以在 WCF 中使用更高效的 BinaryFormatter 进行二进制序列化,并实现对是否使用传统二进制序列化功能的可配置。 作为使用 .NET 框架的系统内部互联,往往期望在使用 WCF 获取统一传输方案的同时,还能得到 BinaryFormatter 类的序列化性能。 所以本篇文章将设计一个 WCF 终结点行为扩展,来配置是否使用 BinaryFormatter 进行数据的序列化。 Tip 只能在操作上添加二进制序列化的行为。 实现步骤 封装 BinaryFormatter 首先,需要对 BinaryFormatter 进行一个简单的封装。 该类使用 BinaryFormatter 来实现对象到二进制流的序列化及反序列化。

    98060发布于 2018-01-29
  • 来自专栏重生信息安全

    代码审计-.NET下的序列化与反序列化(BinaryFormatter)

    作者:远海 前言 本文将介绍BinaryFormatter序列化与反序列化漏洞的原理以及实际应用场景中的代码审计。 相比BinaryFormatter,就不需要这么麻烦了。 序列化的实现 序列化: 序列化是将对象状态转换为可保持或传输的形式的过程. 1.先声明一个class类。 fs = new BinaryFormatter(); FileStream st = new FileStream(@"D:\test.dat", FileMode.Create); fs.Serialize(st, ts); st.Close(); BinaryFormatter fs1 = new BinaryFormatter(); FileStream 实际场景中的代码审计: 在对某系统进行审计时,在某方法中发现BinaryFormatter().Deserialize反序列化漏洞 该处方法为GetCookie疑似获取Cookie。

    1.8K20发布于 2020-10-15
  • 来自专栏重生信息安全

    代码审计-.NET下的序列化与反序列化(BinaryFormatter)

    前言 本文将介绍BinaryFormatter序列化与反序列化漏洞的原理以及实际应用场景中的代码审计。 相比BinaryFormatter,就不需要这么麻烦了。 序列化的实现 序列化: 序列化是将对象状态转换为可保持或传输的形式的过程. 1.先声明一个class类。 fs.Serialize(st, ts); st.Close(); BinaryFormatter fs1 = new BinaryFormatter(); FileStream 反序列化漏洞的触发: BinaryFormatter和SoapFormatter 一样。不需要其他硬性条件。 /ysoserial.exe -f BinaryFormatter -g WindowsIdentity -o base64 -c "calc" -t ?

    1.8K40发布于 2020-10-26
  • 来自专栏跟着阿笨一起玩NET

    C#深拷贝扩展方法(引用类型利用序列化实现深拷贝)

    obj == null) { return null; } BinaryFormatter binaryFormatter = new BinaryFormatter(); using (MemoryStream stream = new MemoryStream ()) { binaryFormatter.Serialize(stream, obj); stream.Position = 0; return (T)binaryFormatter.Deserialize(stream);

    68830发布于 2021-09-09
  • 来自专栏游戏开发之旅

    C# 对象和byte数组的互相转化(序列化)

    /// 目标IP及端口 /// public string Desc_IP_Port { get; set; } } 发送数据时,我们通过BinaryFormatter private void Send(Package pack, Socket s) { BinaryFormatter formatter = new BinaryFormatter { Send(pack, s); } } } 接收数据时将byte数组写入内存流,通过BInaryFormatter 的反序列化将内存流中的数据转化为对象 BinaryFormatter formatter = new BinaryFormatter(); using

    3.4K40发布于 2019-12-03
  • 来自专栏.NET开发那点事

    如何正确实现一个自定义Exception(二)

    ISerializable 主要的作用就是给 BinaryFormatter 序列化器提供指示如何进行序列化/反序列化。也就是说这个接口基本上就是给 BinaryFormatter 设计的。 但是很不幸,这个 BinaryFormatter 存在严重的安全风险。 BinaryFormatter 类型会带来风险,不建议将其用于数据处理。 即使应用程序认为自己正在处理的数据是可信的,也应尽快停止使用 BinaryFormatterBinaryFormatter 不安全,无法确保安全。 BinaryFormatter Obsolete 由于 remoting 技术在 .NET CORE 中已经废弃,并且有严重的安全风险,所以微软开始慢慢淘汰 BinaryFormatter 这个接口。 BinaryFormatter by default .NET produces guidance document on migrating away from BinaryFormatter All

    34860编辑于 2023-09-13
  • 来自专栏stcnb

    CA2300:请勿使用不安全的反序列化程序 BinaryFormatte

    此规则查找 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter 反序列化方法调用或引用。 BinaryFormatter 不安全,无法确保安全。 有关详细信息,请参阅 BinaryFormatter 安全指南。 何时禁止显示警告 BinaryFormatter 不安全,无法确保安全。 End Class 相关规则 CA2301:在未先设置 BinaryFormatter.Binder 的情况下,请不要调用 BinaryFormatter.Deserialize CA2302:在调用 BinaryFormatter.Deserialize 之前,确保设置 BinaryFormatter.Binder

    71500编辑于 2022-02-20
  • [c#]对象序列化和反序列化一种方法

    ,这里介绍其中一种可以序列化对象的方法 以下是伪代码,参考  [Serializable] public class A { int age=10; string name="alice"; } //BinaryFormatter using (FileStream fsWriter = new FileStream(@"data.txt",FileMode.Create,FileAccess.Write)) {     BinaryFormatter bf = new BinaryFormatter();     //序列化     bf.Serialize(fsWriter,a); } //BinaryFormatter将文件中的数据反序列化出来 ); using (FileStream fsReader = new FileStream(@"data.txt",FileMode.Open,FileAccess.Read)) {     BinaryFormatter bf = new BinaryFormatter();     //反序列化     a= (A)bf.Deserialize(fsReader); }

    19410编辑于 2025-07-19
  • 来自专栏技术之路

    c#对象保存Demo

    FileStream fs = new FileStream("newObject.stu", FileMode.Create); //创建二进制格式化器 BinaryFormatter formatter = new BinaryFormatter(); //调用序列化方法 formatter.Serialize(fs, student ) { FileStream fs = new FileStream("newObject.stu", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Student student = (Student)formatter.Deserialize(fs);

    36910编辑于 2024-04-23
  • 来自专栏个人随笔

    C# 序列化与反序列化

    序列化:  保存对象的"全景图"  序列化是将对象转换为可保存或可传输的格式的过程  三种:   二进制序列器:    对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于 命名空间下     [Serializable] //使对象可序列化(必须添加)      特性       程序集,类,方法,属性都可以使用特性       Java中注解 <==> C#特性     BinaryFormatter 反序列化:  将流转换为对象  Disk(硬盘)--->Cache(内存)  BinaryFormatter //创建二进制序列化器   Deserialize(Stream(流))//返回object bf = new BinaryFormatter(); //将对象或具有指定顶级 (根)、 对象图序列化到给定的流 bf.Serialize(stream bf = new BinaryFormatter(); //指定的流反序列化对象图 List<UserInfo> list = (List<UserInfo

    1.2K90发布于 2018-03-14
  • 来自专栏跟着阿笨一起玩NET

    浅谈WebService开发(一)

     ser = new BinaryFormatter();  //序列化对象   20         MemoryStream ms = new MemoryStream();  //内存流   21  ser = new BinaryFormatter();  //序列化对象   32         MemoryStream ms = new MemoryStream();  //内存流   33  ser = new BinaryFormatter();  //序列化对象   45         MemoryStream ms = new MemoryStream();  //内存流   46  ser = new BinaryFormatter();           DataSet dataSet = ser.Deserialize(new MemoryStream(buffer)) as  ser = new BinaryFormatter();           DataSetSurrogate dss = ser.Deserialize(new MemoryStream(buffer

    98730发布于 2018-09-18
  • 来自专栏跟着阿笨一起玩NET

    C# 对象二进制序列化

            if (obj == null)             return null;         MemoryStream ms = new MemoryStream();         BinaryFormatter  formatter = new BinaryFormatter();         formatter.Serialize(ms, obj);         ms.Position = 0;                      return obj;         MemoryStream ms = new MemoryStream(bytes);         ms.Position = 0;         BinaryFormatter  formatter = new BinaryFormatter();         obj = formatter.Deserialize(ms);         ms.Close();         

    1.3K10发布于 2018-09-18
  • 来自专栏张善友的专栏

    在Linux和Windows平台上操作MemoryMappedFile(简称MMF)

    /Binary serialization static object ByteArrayToObject(byte[] buffer) { BinaryFormatter binaryFormatter = new BinaryFormatter(); // Create new BinaryFormatter MemoryStream memoryStream return } static byte[] ObjectToByteArray(object inputObject) { BinaryFormatter binaryFormatter = new BinaryFormatter(); // Create new BinaryFormatter MemoryStream memoryStream = new MemoryStream(); // Create target memory stream binaryFormatter.Serialize

    1.7K60发布于 2018-01-29
  • 来自专栏林德熙的博客

    win10 UWP 序列化 BinaryXML序列化

    然后使用 binaryFormatter 他可以写入流 创建一个文件夹,返回和People类,就可以把他保存在本地 BinaryFormatter binaryFormatter = new BinaryFormatter(); FileStream stream = new FileStream(". /file", FileMode.Create); binaryFormatter.Serialize(stream, people); 这就是序列化,如果需要从保存的文件拿出来 /file", FileMode.Open)) { people = (People) binaryFormatter.Deserialize(stream

    1.1K20发布于 2018-09-18
  • 来自专栏明丰随笔

    运行时序列化 3

    object.ReferenceEquals(singletons[0], singletons[1]); using (var stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, singletons); stream.Position = 0 } } MyClass1 my = new MyClass1() { MyProperty1 = 1 }; using (var stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, my); stream.Position = 0; MyClass2 formatter = new BinaryFormatter(); formatter.Serialize(stream, my); stream.Position = 0; MyClass2

    69520发布于 2019-07-17
  • 来自专栏DearXuan的博客文章

    C# 编程技巧

    using(FileStream fileStream1 = new FileStream(@"D:\1.xuan",FileMode.OpenOrCreate)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(fileStream1, s); } using (FileStream fileStream = new FileStream(@"D:\1.xuan", FileMode.OpenOrCreate)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); Struct ss = binaryFormatter.Deserialize(fileStream)

    72010编辑于 2022-01-19
  • 来自专栏DearXuan的博客文章

    C#序列化对象的二进制储存方法及底层原理研究

    using (FileStream fileStream = new FileStream(@"D:\abc.txt", FileMode.OpenOrCreate)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); binaryFormatter.Serialize(fileStream, @struct); using(FileStream fileStream = new FileStream(@"D:\abc.txt", FileMode.OpenOrCreate)) { BinaryFormatter binaryFormatter = new BinaryFormatter(); Struct @struct = binaryFormatter.Deserialize(fileStream

    1.8K10编辑于 2022-01-19
领券