首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

修而复:说说WebLogic那修不完的Java反序列化漏洞

编者说明:这篇文章初稿写在Oracle CPU补丁发布之后,考虑到文章内容的影响,并未在当时发布,WebLogic 的 Java 反序列化漏洞,已经修复了多次,最终的修复仍然彻底解决问题。...通过该漏洞,攻击者可以在授权的情况下远程执行任意代码。 ps....Oracle发布的多个WebLogic反序列化漏洞补丁反复被绕过,这都源于Oracle当年修复CVE-2015-4852那个轰动一时的Java反序列化漏洞时采用的黑名单方式。 ?...-3248 CVE-2018-2628 从2015年一直修到2018年,反复修,反复被绕过,基于t3协议的Java反序列化漏洞还在继续。...基于wls-wsat服务组件的引起远程代码执行的反序列化漏洞: CVE-2017-3506 CVE-2017-10271 2018年1月1日-3日大面积爆发的基于CVE-2017-10271的Java反序列化漏洞植入门罗币挖矿程序攻击的事件被大家所熟知

1.3K60

C# 特性(Attribute)之Serializable特性

对反序列化添加这项约束,是出于性能方面的考虑。但是,这违反了对象编写者通常采用的一些运行时约定,因此,开发人员在将对象标记为序列化时,应确保考虑了这一特殊约定。...例如,如果试图序列化以下类实例,将会显示一个 SerializationException,说明 MyStuff 类型记为序列化。...一个不错的办法是,在类封装的情况下,将构造函数标记为 protect。如果类已封装,则应标记为 private。...如果对象实现 Serializable,将使用默认的序列化策略,对所有记为 NonSerialized 的字段都进行序列化。...也许他们会从我的类中派生出一个需要序列化的新类。只要有这种可能性,就应将类标记为序列化。除下列情况以外,最好将所有类都标记为序列化: 所有的类都永远也不会跨越应用程序域。

2.1K100

MySQL事务隔离级别:读提交、读已提交、重复读和串行

MySQL的四种事务隔离级别依次为:读提交(Read Uncommitted)、读已提交(Read Committed)、重复读(Repeatable Read)和串行化(Serializable)...读提交(Read Uncommitted)读提交是最低的隔离级别,允许一个事务读取并使用另一个事务尚未提交的修改。因此,在该级别下可能会发生脏读问题。...在读提交的情况下,如果一个事务对数据进行了修改,但是还没有提交,则另一个事务读取该数据时可能会得到错误的结果。这样就会造成脏读问题。...重复读(Repeatable Read)在重复读级别下,一个事务在执行期间多次读取同一行数据,将得到相同的结果。因此,在该级别下解决了不可重复读问题。但是,仍然存在幻读问题。...总结MySQL提供了四种事务隔离级别,读提交是最低的级别,因为它存在脏读问题。读已提交解决了脏读问题,但是仍然存在不可重复读和幻读问题。重复读解决了不可重复读问题,但是仍然存在幻读问题。

2.1K10

带你了解Java的序列化(Serializable)与反序列化

如果要序列化的某些对象实现Serializable接口,则此方法将引发NotSerializableException。 ObjectInputStream。...-成员变量age被标记为transient。 下面让我解释一下它们。 2-1.什么是serialVersionUID常数 serialVersionUID是一个常数,用于唯一标识序列化类的版本。...这就是为什么建议为序列化类显式添加serialVersionUID的原因。 2-2.什么是瞬时变量? 在上面的Student类中,您看到成员变量age被标记为transient,对吗?...JVM 在序列化过程中跳过瞬态变量。这意味着在序列化对象时不会存储age变量的值。 因此,如果成员变量不需要序列化,则可以将其标记为瞬态。...反序列化序列化类的实例时,构造函数将不会运行。 如果超类实现Serializable,则在反序列化子类对象时,超类构造函数将运行。 静态变量序列化,因为它们不是对象本身的一部分。

1.6K30

学习总结——关于C#中的序列化

2、c#中的序列化 备注(转载自https://www.cnblogs.com/gc2013/p/4070474.html) ①基本序列化 要使一个类序列化,最简单的方法是使用 Serializable...例如,如果试图序列化以下类实例,将会显示一个 SerializationException,说明 MyStuff 类型记为序列化。 ②选择性序列化 类通常包含不应被序列化的字段。...当此类被反序列化时,序列化此类时所存储的 ID 对应的线程可能不再运行,所以对这个值进行序列化没有意义。...对象反序列化时,对构造函数的任何可见性约束都将被忽略,因此,可以将类标记为 public、protected、internal或 private。...一个不错的办法是,在类封装的情况下,将构造函数标记为 protect。如果类已封装,则应标记为 private。

82431

C#中Serializable序列化实例

二、序列化分类 1、基本序列化 要使一个类序列化,最简单的方法是使用 Serializable 属性对它进行标记,如下所示 代码如下: [Serializable] public class MyObject...例如,如果试图序列化以下类实例,将会显示一个 SerializationException,说明 MyStuff 类型记为序列化。 2、选择性序列化 类通常包含不应被序列化的字段。...对象反序列化时,对构造函数的任何可见性约束都将被忽略,因此,可以将类标记为 public、protected、internal或 private。...一个不错的办法是,在类封装的情况下,将构造函数标记为 protect。如果类已封装,则应标记为 private。...例如,把一个新变量添加至类的较高版本后,可以将该变量标记为 NonSerialized,以确保该类与早期版本保持兼容。

1.7K30

JQ中serialize表单序列化,当radio或checkbox 选中时,问题分析&解决方案

相信很多人都用过jq的表单序列化serialize()方法,因为这能很方便地帮你把表单里所有的非禁用输入控件序列化为 key/value 对象,不需要你再去一个个地拼接参数了。...就是当radio或checkbox 选中时,没有序列化到对象中。 什么原因呢?...我们可以看到我们调用的serialize(),其实是走的param()方法,这个方法查阅jq手册即可得知,其作用是将数组或对象序列化为一个 key/value 对象。...那么自然当radio或checkbox 选中时,这边的数组长度是为0的,所以这里就把radio或checkbox给漏掉了。 那么怎么解决呢?直接改源码?这也太粗暴了吧。...ghostsf心血来潮写了一个jq拓展,代码如下:(并不要脸地命名为ghostsf_serialize): //为jquery.serializeArray()解决radio,checkbox选中时没有序列化的问题

2.1K20

CA2311:在先设置 NetDataContractSerializer.Binder 的情况下,请不要反序列化

规则说明 反序列化不受信任的数据时,不安全的反序列化程序易受攻击。 攻击者可能会修改序列化数据,使其包含非预期类型,进而注入具有不良副作用的对象。...例如,针对不安全反序列化程序的攻击可以在基础操作系统上执行命令,通过网络进行通信,或删除文件。...如何解决冲突 改为使用安全序列化程序,并且不允许攻击者指定要反序列化的任意类型。 有关详细信息,请参阅首选替代方案。 使序列化的数据免被篡改。 序列化后,对序列化的数据进行加密签名。...限制反序列化的类型。 实现自定义 System.Runtime.Serialization.SerializationBinder。...在反序列化之前,请在所有代码路径中将 Binder 属性设置为自定义 SerializationBinder 的实例。

1.3K00

Qt 重入和线程安全

: 即使调用使用共享数据,也可以从多个线程同时调用线程安全函数,因为对共享数据的所有引用都已序列化。...如果某个函数记为线程安全或可重入,则不应在其他线程中使用该函数。 如果某个类记为线程安全或可重入,则不应从其他线程访问该类的特定实例。...重入 C ++类通常是重入的,仅因为它们仅访问自己的成员数据。 只要没有其他线程可以同时在该类的同一实例上调用成员函数,则任何线程都可以在重入类的实例上调用成员函数。...线程安全 显然,访问必须序列化:线程A必须执行1、2、3步骤(在原子上不中断),线程B才能执行相同的步骤; 或相反亦然。...锁定互斥锁确保对来自不同线程的访问进行序列化。 互斥锁数据成员使用mutable声明,因为我们需要在value()中锁定和解锁互斥锁,这是一个const函数。

88910

CA2353:序列化类型中的不安全 DataSet 或 DataTable

,并且反序列化的对象图包含 DataSet 或 DataTable 时,攻击者创建恶意有效负载来执行拒绝服务攻击。...此规则会查找反序列化时不安全的类型。 如果代码没有反序列化找到的类型,则没有反序列化漏洞。 有关详细信息,请参阅 DataSet 和 DataTable 安全指南。...使序列化的数据免被篡改。 序列化后,对序列化的数据进行加密签名。 在反序列化之前,验证加密签名。 保护加密密钥不被泄露,并设计密钥轮换。...{ get; set; } } 相关规则 CA2350:确保 DataTable.ReadXml() 的输入受信任 CA2351:确保 DataSet.ReadXml() 的输入受信任 CA2352:序列化类型中的不安全...CA2362:自动生成的序列化类型中不安全的数据集或数据表易受远程代码执行攻击

42500

翻译 | 重入与线程安全

在整个文档中,术语:「重入和线程安全」用于标记类和函数,以表示它们如何在多线程应用程序中使用: 「即使在调用使用共享数据时,也可以从多个线程同时调用线程安全的函数,因为对共享数据的所有引用都是序列化的...如果函数记为线程安全或可重入,则不应从不同的线程使用它。如果一个类没有标记为线程安全或可重入,则不应该从不同的线程来访问该类的特定实例。...重入   C++类通常是重入的,因为它们只访问自己的成员数据。任何线程都可以在重入类的实例上调用成员函数,只要没有其他线程可以同时在该类的同一实例上调用成员函数。...线程安全   显然,访问必须是序列化的:线程A必须执行上述步骤123中的原子性不中断,然后线程B才能执行相同的步骤,反之亦然。...锁定互斥锁可以确保来自不同线程的访问将被序列化。互斥锁数据成员使用可变限定符声明的,因为我们需要在value()中锁定和解锁互斥锁,同时它还是一个const修饰的函数。

1.1K30

慕课网Flask构建扩展的RESTful API-6. 模型对象的序列化

模型对象的序列化 1.理解序列化时的default函数 我们最想做的一件事情,就是在视图函数中,读取出模型之后,还要把他的属性读出来,转换成一个字典。...我们想直接jsonfiy(user) 现在jsonfiy并不能直接序列化对象,所以我们的目标就是必须想办法让jsonfiy直接序列化对象。...jsonfiy在序列化对象的时候,如果不知道如何序列化当前传进来的参数,就会去调用JSONEncoder类的default函数。...keys 返回的必须是一个元组或者列表来声明要序列化的键。...优化1:每一个模型如果需要序列化,都要有getitem方法,可以放到基类里面去 优化2:default函数,是递归调用的,只要遇到不能序列化的对象,就会调用default函数。

1.1K20

安全规则

CA2301:在先设置 BinaryFormatter.Binder 的情况下,请不要调用 BinaryFormatter.Deserialize 反序列化不受信任的数据时,会对不安全的反序列化程序造成风险...CA2311:在先设置 NetDataContractSerializer.Binder 的情况下,请不要反序列化序列化不受信任的数据时,会对不安全的反序列化程序造成风险。...此编码有助于避免注入攻击,这些注入攻击会攻击对头包含的不受信数据进行回显的应用程序。...CA5367:请勿序列化具有 Pointer 字段的类型 此规则检查是否存在带有指针字段或属性的序列化类。...CA5396:将 HttpCookie 的 HttpOnly 设置为 true 请确保将安全敏感的 HTTP Cookie 标记为 HttpOnly,这是一个深度防御措施。

1.8K00

代码质量规则

CA1822:将成员标记为 static 可以将不访问实例数据或不调用实例方法的成员标记为 static(在 Visual Basic 中为 Shared)。...在将这些方法标记为 static 之后,编译器将向这些成员发出非虚拟调用站点。 这会使性能敏感的代码的性能得到显著提高。 CA1823:避免使用的私有字段 检测到程序集内有似乎访问过的私有字段。...CA2216:释放类型应声明终结器 实现 System.IDisposable 并包含建议使用非托管资源的字段的类型实现 Object.Finalize 所描述的终结器。...此编码有助于避免注入攻击,这些注入攻击会攻击对头包含的不受信数据进行回显的应用程序。...CA5367:请勿序列化具有 Pointer 字段的类型 此规则检查是否存在带有指针字段或属性的序列化类。

2.1K30
领券