fastjson是爽了开发, 伤了运维
fastjson 是国内非常流行的Java处理json的库, 出自阿里巴巴的温少. 当年我也是看了温少介绍fastjson的性能对比介绍, 开始在手头上的项目中应用起来的.
距离第一个应用fastjson的项目, 至今已经用了差不多五年时间, 越来越发现这个库总有一些隐隐约约的坑.
每隔一两个月就会有这样子的聊天
执行漏洞
fastjson已经数次爆出在反序列化bean过程中会产生远程执行的漏洞, 只要攻击者精心编写一段json, 服务器就会运行其中的命令.
fastjson 漏洞测试
与kotlin兼容性不佳
出现这个原因是因为kotlin的非空特性。
如果一个类中声明了一个字段(kotlin的特性,该字段默认是非空的),使用fastjson进行转化的时候,如果json数据中没有该字段的数据,则会出现转换异常。
这个还是很要命的, 前年在公司内部推广的kotlin语言, 写了好多框架和工具, 开发时没发现异常, 等到上线后遇到各种各样的问题, 很头疼, 最后还是换成了Gson.
没按预期处理json
这个案例太多了, 去围观一下fastjson的 issue 就明白了.
心得
有时候, 追求服务器性能还是追求自己的生活, 并不能两得.
对于服务端的软件选型, 我越来越赞同Red Hat那种以稳为主的策略.
fastjson Github issues