一、前言

fastjson真是不让人省心,2020年5月28日又报了漏洞。

fastjson的作用:

  1. 将javabean序列化为json格式的字符串。
  2. 将json格式的字符串,反序列化为javabean。

二、fastjson使用过程

添加maven依赖:

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.54</version>
</dependency>

API使用:

String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化

三、白名单解决反序列化

fastjson在将对象进行反序列化的时候,有时候会不成功,于是有了以下方式来解决,多个包名使用逗号隔开:

  1. 添加白名单:在代码中添加你要反序列化的javabean:ParserConfig.getGlobalInstance().addAccept(“com.taobao.pac.client.sdk.dataobject.,com.cainiao.”);
  2. 加上JVM启动参数:-Dfastjson.parser.autoTypeAccept=com.taobao.pac.client.sdk.dataobject.,com.cainiao.
  3. 在fastjson.properties中添加:fastjson.parser.autoTypeAccept=com.taobao.pac.client.sdk.dataobject.,com.cainiao.

四、打开autotype,解决反序列化

如果上面的添加白名单的办法无法奏效,那可以继续通过以下打开autotype的方式:

  1. 通过JVM参数控制:-Dfastjson.parser.autoTypeSupport=true
  2. 代码中设置:ParserConfig.getGlobalInstance().setAutoTypeSupport(true);

五、漏洞问题

绕过autoType开关的限制,从而反序列化有安全风险的类,攻击者利用该漏洞可实现在目标机器上的远程代码执行。

六、解决办法一:升级版本

直接升级fastjson到1.2.69或1.2.70。

<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.70/1.2.69</version>
</dependency>

七、解决办法二:升级+打开safemode

因为漏洞影响的是1.2.68和它以下的版本,在1.2.69和1.2.70版本出现之前,此漏洞只能通过先升级到1.2.68,然后打开safemode完全禁止autotype的方式来解决,safeMode 会完全禁用 autotype,无视白名单,请注意评估对业务影响:

  1. 在代码中设置:ParserConfig.getGlobalInstance().setSafeMode(true);
  2. 加上JVM启动参数:-Dfastjson.parser.safeMode=true
  3. 通过fastjson.properties文件配置:fastjson.parser.safeMode=true
  4. 另可通过将有风险的类添加至黑名单进行防护:ParserConfig.getGlobalInstance().addDeny(“类名”);

八、safeMode场景如何做autoType

在1.2.68之后的版本,提供了AutoTypeCheckHandler扩展,可以自定义类接管autoType, 通过ParserConfig#addAutoTypeCheckHandler方法注册。

// com.alibaba.fastjson.parser.ParserConfig.AutoTypeCheckHandler
/*** @since 1.2.68*/
public interface AutoTypeCheckHandler {Class<?> handler(String typeName, Class<?> expectClass, int features);
}// com.alibaba.fastjson.parser.ParserConfig#addAutoTypeCheckHandler

fastjson的漏洞解决—2020年5月28日相关推荐

  1. 6 日期字符串转日期_山西省导游协会关于发放电子导游证的通知 (生成日期为2020年5月28日2020年6月3日)...

    各位会员.导游同仁们:山西省导游协会电子导游证(生成日期为:2020年5月28日-2020年6月3日)已制作完成,为保障电子导游证发放工作顺利进行,现将发放电子导游证有关事项通知如下:一.领取人员手机 ...

  2. csgo跑图文件_一键跑图!极为方便的CSGO跑图工具(附2020年5月28日更新)

    原标题:一键跑图!极为方便的CSGO跑图工具(附2020年5月28日更新) 太长不看版 2020年5月28日更新日志极为方便的CSGO跑图工具,分享给大家 2020年5月28日CSGO更新日志 翻译: ...

  3. csgo 放置机器人_一键跑图!极为方便的CSGO跑图工具(附2020年5月28日更新)

    太长不看版2020年5月28日更新日志 极为方便的CSGO跑图工具,分享给大家 2020年5月28日CSGO更新日志 翻译:MeDusA 注:关于国服客户端更新的问题,目前已反馈V社,将尽快修复.国服 ...

  4. 2020年10月28日普级组总结

    2020 年 10 月 28 日 普 级 组 2020年10月28日普级组 2020年10月28日普级组 今天又是打了场模拟赛,做的不怎么理想. 成绩 : 由于数据水,所以还是乱搞搞了个302分:而陈 ...

  5. 面试经历---阿里游戏(2020年09月28日晚上7点视频面试)

    9月28日晚上进行了一次视频面试,阿里广州游戏部门,下面说下这次面试的情况 1.自我介绍 介绍了做过的项目,面试官就围绕做过的项目进行深挖. 2.redis的集群方式 如果节点挂掉怎么办? 单个节点的 ...

  6. 《前端》样式冲突,怎么解决--2020年3月30日

    有时候我引用了bootstrap样式,自己也定义了 样式.但是我看后台应用的是bootstrap包装好的样式. (很多时候,其实是我愚蠢的总把id选择器,用了".",其实应该用&q ...

  7. 2020年11月28日

    leetcode刷题记录 剑指offer 50. 第一次只出现一次的字符 思路 用一个结构体保存值和val,然后进行排序,简单题就不多说了 代码 typedef struct valandindex{ ...

  8. 2020年11月28日天梯赛GPLT总决赛(全部题目 + 189分代码答案)

    written by: 东篱下の悠然 L1-1 嫑废话上代码 (5分) Linux 之父 Linus Torvalds 的名言是:"Talk is cheap. Show me the co ...

  9. 神州信息笔试 2020年9月28日

    第一题 任取数组中的一个数然后将它放置在数组的最后一个位置.问最少操作多少次可以使得数组从小到大有序? 题解 排序后 两个数组对比找相同的元素,不同的代表已经换了位置 记录相同的 然后用length ...

最新文章

  1. leetcode-2 两数相加
  2. Emojify - v2 吴恩达老师深度学习第五课第二周编程作业2
  3. linux下 DNS配置过程『罗斌原创』
  4. java throwable用法_java – ExceptionHandler不能与Throwable一起使用
  5. 【opencv学习笔记八】创建TrackBar轨迹条
  6. 羽毛球 机器人 Robocon 2015 泰国预选赛(全国大学生机器人竞赛)
  7. agv系统介绍_AGV地面控制系统介绍
  8. 笨办法学 Python · 续 练习 47:`bc`
  9. 风之大陆电脑版要下载c语言,风之大陆电脑版
  10. static与final关键字
  11. 收藏:常见物联网通信技术概览
  12. CSAPP第六章家庭作业参考答案
  13. 分数加减乘除混合运算带答案_分数加减乘除混合运算专项训练
  14. 颠覆你的世界观-芝诺悖论
  15. Python攻城师的成长————css语法、伪元素选择器(部分)
  16. 如何合理利用微信分组做好微信好友的管理
  17. html格式错误检测,HTML格式错误
  18. esp8266启动报错 ets Jan 8 2013,rst cause:2, boot mode:(7,7)
  19. 陈皓GDB调试教程链接汇总
  20. 强化学习笔记(一)基础篇

热门文章

  1. java查询ftp路径下所有文件名字
  2. HTTP Status 500 - Failed to evaluate expression 'ROLE_USER'
  3. SE14造成表丢失后找回数据
  4. SAP-ABAP-SE14丢失的数据如何恢复
  5. 企业微信消息推送卡片按钮互动的使用
  6. java毕业设计SEOUL设计师品牌代购商城Mybatis+系统+数据库+调试部署
  7. 2021.11.08【web刷题记录】
  8. [Windows实用软件推荐:1]本地搜索工具Everything
  9. 如何使用List.toArray()转换为数组对象
  10. 农学211高校食堂饭菜价格贵得离谱惹争议!学生:吃不起饭了!