安全问题我们需要重视,立刻升级fastjson2

您所在的位置:网站首页 fastjson最新漏洞解决方案 安全问题我们需要重视,立刻升级fastjson2

安全问题我们需要重视,立刻升级fastjson2

2024-07-12 15:42:24| 来源: 网络整理| 查看: 265

一、前言

小伙伴大家好,我是开源字节快速开发平台的作者。fastjson2.0 是fastjson的重要升级,目标是为下一个十年提供一个高性能的JSON库,同一套API支持JSON/JSONB两种协议。

近期fastjson 再报安全漏洞,直接给我们发送了高危告警,因此升级fastjson迫在眉睫。

FasterXML Jackson是美国FasterXML公司的一款适用于Java的数据处理工具。Jackson-databind是其中的一个具有数据绑定功能的组件。Jackson-databind可以将Java对象转换成json对象,同样也可以将json转换成Java对象。

暂且不说 fastjson2 的性能提升,在安全方面也值得我们去升级,这也是我们必须要去做的事。

二、罪魁祸首 AutoType

fastjson、jackson 都支持 AutoType 功能,这个功能在序列化的 JSON 字符串中带上类型信息,在反序列化时,不需要传入类型,实现自动类型识别。

三、fastjson1 安全问题

fastjson 1.x 内部维护了一个白名单,java 发展近 30 年难免有些漏网之鱼,这也造成近几年 fastjson 安全漏洞频发。

四、fastjson2 的设计 fastjson2 AutoType 必须显示打开才能使用,没有任何白名单,也不包括任何 Exception 类的白名单。这可以保证缺省配置下是安全的。

序列化时带上类型信息,需要使用 JSONWriter.Feature.WriteClassName。比如:

Bean bean = ...; String jsonString = JSON.toJSONString (bean, JSONWriter.Feature.WriteClassName);

很多时候,root对象是可以知道类型的,里面的对象字段是基类或者不确定类型,这个时候不输出root对象的类型信息,可以减少序列化结果的大小,也能提升反序列化的性能。

Bean bean = ...; String jsonString = JSON.toJSONString (bean, JSONWriter.Feature.WriteClassName,  JSONWriter.Feature.NotWriteRootClassName);

反序列化打开AutoType功能支持自动类型

Bean bean = (Bean) JSON.parseObject (jsonString, Object.class, JSONReader.Feature.SupportAutoType); fastjson2 AutoType 支持配置 safeMode,在 safeMode 打开后,显式传入 AutoType 参数也不起作用,具体配置如下: -Dfastjson2.parser.safeMode=true fastjson2 AutoType 会经过内置黑名单过滤。该黑名单能拦截大部分常见风险,这个机制不能保证绝对安全,打开 AutoType 不应该在暴露在公网的场景下使用。

五、序列化示例代码

使用FastJson2JsonRedisSerializer实现RedisSerializer接口

public class FastJson2JsonRedisSerializer implements RedisSerializer {     public static final Charset DEFAULT_CHARSET     = Charset.forName("UTF-8");     private Class clazz;     public FastJson2JsonRedisSerializer(Class clazz)     {         super();         this.clazz = clazz;     }     @Override     public byte[] serialize(T t) throws SerializationException     {         if (t == null)         {             return new byte[0];         }         return JSON.toJSONString         (t, JSONWriter.Feature.WriteClassName).getBytes         (DEFAULT_CHARSET);     }     @Override     public T deserialize(byte[] bytes) throws SerializationException     {         if (bytes == null || bytes.length


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭