com.alibaba.fastjson.JSONException: safeMode not support autoType :

845 阅读1分钟

springboot 整合 security 框架的时候,通过 fastjson 序列化用户信息保存到 redis,后获取 redis 数据进行反序列化,报错 com.alibaba.fastjson.JSONException: safeMode not support autoType : com.*.common.core.domain.User。

原因分析:

2017年3月15日,fastjson官方发布安全升级公告,该公告介绍fastjson在1.2.24及之前的版本存在代码执行漏洞,当恶意攻击者提交一个精心构造的序列化数据到服务端时,由于fastjson在反序列化时存在漏洞,可导致远程任意代码执行。

  自1.2.25及之后的版本,禁用了部分autotype的功能,也就是”@type”这种指定类型的功能会被限制在一定范围内使用。

  而由于反序列化对象时,需要检查是否开启了autotype。所以如果反序列化检查时,autotype没有开启,就会报错。

解决办法:

在 FastJsonRedisSerializer 配置类中配置白名单,添加如下代码

static
{
    ParserConfig.getGlobalInstance().addAccept("com.***.LoginUser");
}

image.png