enableDefaultTyping过期的原因是存在漏洞【阿里云上的漏洞公告】Jackson框架enableDefaultTyping方法反序列化漏洞
漏洞名称 Jackson框架enableDefaultTyping方法反序列化漏洞 官方评级 高危 漏洞描述 该漏洞是由于Jackson框架enableDefaultTyping方法存在Java反序列化代码执行漏洞,攻击者利用漏洞可在服务器主机上执行任意代码或系统指令,取得网站服务器的控制权。 漏洞利用条件和方式 黑客可以远程代码执行来利用该漏洞。 漏洞影响范围 Jackson 2.7 < 2.7.10这个方法指定序列化输入的类型 解决之前
ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer);解决方法:使用activateDefaultTyping方法替换掉enableDefaultTyping 替换方法为:
ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); //om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance , ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); jackson2JsonRedisSerializer.setObjectMapper(om);