谈一谈安全问题的重要性(安全问题牢记在心)这样也行?,

admin 2023-10-25 10:50:41 浏览量:0
问题描述:
最佳经验

一、前言小伙伴大家好,我是开源字节快速开发平台的作者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 DEFAULTCHARSET = 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 (DEFAULTCHARSET);} @Override public T deserialize(byte[] bytes) throws SerializationException { if (bytes == null bytes.length <=0){ return null;} String str = new String(bytes, DEFAULTCHARSET); return JSON.parseObject (str, clazz, JSONReader.Feature.SupportAutoType);}}

六、升级到 fastjson26.1兼容模式升级升级可以通过兼容模式升级,兼容模式不需要改代码,但在深度使用的场景,不能做到完全兼容兼容模式Maven依赖com.alibabafastjson${fastjson2.version}。

6.2使用新API升级使用新API是建议的升级方式,使用新的API能获得更多的功能包名编程 FASTJSON v2和1.x版本使用不同的package,新的package名称是com.alibaba.fastjson2,新package和之前不同,可以实现1.x和2.x共存。

import com.alibaba.fastjson2.JSON;import com.alibaba.fastjson2.JSONObject;import com.alibaba.fastjson2.JSONArray;

Maven依赖 Maven依赖的groupId和1.x不同,使用了新的groupIdcom.alibaba.fastjson2com.alibaba.fastjson2fastjson2${fastjson2.version}

我们的项目没有强制依赖 fastjson1,所以选择了直接升级新 API最后fastjson2在性能和安全上都得到了很好的提升,开源字节开快速开发平台已经完成了升级,代码改动较大,fork了我们仓库的同学请及时更新,安全无小事,请慎重。

如若转载,请注明出处:开源字节 https://sourcebyte.vip/article/320.html

sdfsdf
举报收藏 0打赏 0评论 0

相关推荐

安立泽百度百科(安立勇个人简历)学到了,

原标题:安立志 | 明清禁毁《水浒传》《水浒传》是四大名著之一,家喻户晓该书元末明初问世,数百年来,命运多舛,有识之士却予
详情

曾国藩志向(曾国藩 励志)不要告诉别人,

文章作者:琢磨君今天我们继续来聊一聊曾国藩强大内心的方法!读曾国藩家书和日记,我们会发现:立志,是曾国藩强大内心的方法之
详情

特种兵我创造了恐怖幽灵小说(特种兵我创造了幽灵)学会了吗,

第九章三个都是混蛋境外,武昊开启苍鹰之眼和天狼之鼻狂奔当中,他的苍鹰之眼依旧能清晰的看到地面留下的脚印天狼之鼻,更是更能
详情

升国旗奏国歌是什么歌词(升国旗奏国歌的歌词)全程干货,

综合各单位来稿锦绣祖国,盛世华诞10月1日上午迎着清晨第一缕阳光东部战区各部队隆重举行升国旗仪式庆祝中华人民共和国成立74周
详情

日本立教大学(日本立教大学相当于国内哪所学校)学到了,

立正大学是一所私立大学,设立于1924年,创立者是日莲宗的僧侣所以立正的前身并不是综合性大学,是在佛学的基础上,随着时代的发
详情

稍息立正向前看齐歌曲(稍息立正向前看齐向前看口令)一看就会,

2021年8月30日2021级本科新生齐聚运动场身披戎装,神情激扬迎接大学必经的第一课、必修课军训破晓时分,红日初升同学们已然列队
详情
  • admin
    加关注0
  • 没有留下签名~~

精选推荐

四川地质公司(四川地质队多久改制)学会了吗,

原标题:四川小伙立志投身中国地质事业9月4日,郑长佩在中国地质大学(武汉)迎新点长江日报记者陈玲 摄长江日报讯(记者陈玲通

安立欣简介(安立盛简介)一篇读懂,

原标题:安立志 | 清代查处《红楼梦》读过《红楼梦》的都知道那首著名的短诗:满纸荒唐言,一把辛酸泪都云作者痴,谁解其中味?

安立泽百度百科(安立勇个人简历)学到了,

原标题:安立志 | 明清禁毁《水浒传》《水浒传》是四大名著之一,家喻户晓该书元末明初问世,数百年来,命运多舛,有识之士却予

新疆当医生怎么样(新疆当医生待遇)万万没想到,

中国青年报客户端讯(应超 中青报·中青网记者 林洁)从新疆克孜勒苏柯尔克孜自治州阿图什市南下,跨越5000多公里,于米提江·阿

地震中救出12岁的少女是谁(12年前地震女孩嫁给他救命恩人)学会了吗,

"生命在闪耀中现出绚烂,在平凡中现出真实"这句话非常适合送给12年前汶川地震中的英雄们2008年5月12日,中国人民共同经历了一场