CSDNfastjson到底做错了什么?为什么会被频繁爆出漏洞?
本文插图
fastjson大家一定都不陌生 , 这是阿里巴巴的开源一个JSON解析库 , 通常被用于将Java Bean和JSON 字符串之间进行转换 。
前段时间 , fastjson被爆出过多次存在漏洞 , 很多文章报道了这件事儿 , 并且给出了升级建议 。
但是作为一个开发者 , 我更关注的是他为什么会频繁被爆漏洞?于是我带着疑惑 , 去看了下fastjson的releaseNote以及部分源代码 。
最终发现 , 这其实和fastjson中的一个AutoType特性有关 。
从2019年7月份发布的v1.2.59一直到2020年6月份发布的 v1.2.71, 每个版本的升级中都有关于AutoType的升级 。
下面是fastjson的官方releaseNotes 中 , 几次关于AutoType的重要升级:
1.2.59发布 , 增强AutoType打开时的安全性 fastjson
1.2.60发布 , 增加了AutoType黑名单 , 修复拒绝服务安全问题 fastjson
1.2.61发布 , 增加AutoType安全黑名单 fastjson
1.2.62发布 , 增加AutoType黑名单、增强日期反序列化和JSONPath fastjson
1.2.66发布 , Bug修复安全加固 , 并且做安全加固 , 补充了AutoType黑名单 fastjson
1.2.67发布 , Bug修复安全加固 , 补充了AutoType黑名单 fastjson
1.2.68发布 , 支持GEOJSON , 补充了AutoType黑名单 。 (引入一个safeMode的配置 , 配置safeMode后 , 无论白名单和黑名单 , 都不支持autoType 。 ) fastjson
1.2.69发布 , 修复新发现高危AutoType开关绕过安全漏洞 , 补充了AutoType黑名单 fastjson
1.2.70发布 , 提升兼容性 , 补充了AutoType黑名单
甚至在fastjson的开源库中 , 有一个Isuue是建议作者提供不带autoType的版本:
本文插图
AutoType 何方神圣?fastjson的主要功能就是将Java Bean序列化成JSON字符串 , 这样得到字符串之后就可以通过数据库等方式进行持久化了 。 但是 , fastjson在序列化以及反序列化的过程中并没有使用Java自带的序列化机制 , 而是自定义了一套机制 。 其实 , 对于JSON框架来说 , 想要把一个Java对象转换成字符串 , 可以有两种选择:
- 1、基于属性
- 2、基于setter/getter
推荐阅读
- 浪浪科技精选|超频三GI-CX240 ARGB水冷,极致性能冷酷到底
- 艾滋病|丈夫婚检查出艾滋病,医生却对妻子保密?医生到底有没有错?
- 葛梦茹说娱乐|搞笑GIF:这地方到底有什么?竟然是一个危险的地方!
- 娱乐当家|洗头先用洗发水仍是护发素?许多人都搞错了,难怪头发油腻又掉发
- 聚会@灵签占卜:同学聚会,你会选哪件礼服?测你另一半到底有多爱你?
- 官方通报干部疑出轨在妻死后失联|【后续来了】官方通报干部疑出轨在妻死后失联 真相到底是什么?
- 妈妈倒车时不慎撞死自己孩子|可怕!妈妈倒车时不慎撞死自己孩子是怎么回事?真相到底是什么?
- 医生为督促女孩康复训练将其训哭|感动!医生为督促女孩康复训练将其训哭是怎么回事?真相到底是什么?
- 狮子|老虎厉害还是狮子厉害?科学研究表明,其实大多数人都想错了
- 苹果|死磕到底?苹果CEO库克霸气回应:我们是不会做出任何让步
