安全问题我们需要重视,立刻升级fastjson2 |
您所在的位置:网站首页 › fastjson最新漏洞解决方案 › 安全问题我们需要重视,立刻升级fastjson2 |
一、前言
小伙伴大家好,我是开源字节快速开发平台的作者。fastjson2.0 是fastjson的重要升级,目标是为下一个十年提供一个高性能的JSON库,同一套API支持JSON/JSONB两种协议。 近期fastjson 再报安全漏洞,直接给我们发送了高危告警,因此升级fastjson迫在眉睫。 FasterXML Jackson是美国FasterXML公司的一款适用于Java的数据处理工具。Jackson-databind是其中的一个具有数据绑定功能的组件。Jackson-databind可以将Java对象转换成json对象,同样也可以将json转换成Java对象。 暂且不说 fastjson2 的性能提升,在安全方面也值得我们去升级,这也是我们必须要去做的事。 二、罪魁祸首 AutoTypefastjson、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 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |