Jackson Databind 2.9.9.3反序列化安全修复

jackson-databind 的 2.9.9.3 版本是个挺关键的更新,主要是为了规避老版本里那个反序列化的安全漏洞。之前 2.9.9.2 及以下的版本,稍不注意就容易被攻击,尤其项目里有外部输入的 JSON 数据时,更容易中招。把它升到 2.9.9.3,问题基本就了,用着也比较放心。

jackson-databind算是做 Java JSON 时常用的库了,配 Spring、做接口响应、搞对象映射,都少不了它。它本身的能力没问题,就是老版本在反序列化的时候太“聪明”,能自动创建一些类,结果反倒留下了被利用的机会。

2.9.9.3 对这个问题做了修补,换完之后你可以继续用原来的写法,比如objectMapper.readValue(jsonStr, User.class)这种,基本不用改逻辑。用在老项目上也蛮顺的,不容易出兼容问题,响应也快。

如果你还在用老版本,建议早点升级,是项目上线后有外部调用接口的。之前有开发被这个坑过,一直查不到数据异常的原因,结果是被恶意构造的 payload 搞瘫了服务,挺冤的。

相关的文章也可以看看,jackson-databind 的漏洞问题讲得挺清楚,顺便也能回顾下序列化/反序列化的基本概念,LitJson 的那篇也有点参考价值。

如果你项目里用到了jackson,又还停在 2.9.9.2 或更早的版本,那真得升级一下,不然就像门锁坏了你还不修,一个 payload 就能“进你家”。

jar 文件大小:1.29MB