问题现象
- 升级了
gradle
,改了文件存储位置,项目需要重新构建下载依赖文件,发现fastjson 1.2.66
一直下载不下来 - 一直卡在下载,就想着手动下载下试试,就去了
mvnrepository
网站 - 找到
fastjson
时,发现了fastjson2
Note: This artifact was moved to: com.alibaba.fastjson2 » fastjson2
mvnrepository
网站提供的最新fastjson版本为2.0.24
,而且看了下,最低可用版本为1.2.83
- 其余更低版本的,有一些风险点漏洞,可能会被利用,对程序或数据造成篡改,具体可以点击进去
- 这里贴其中一个
CVE-2022-25845
,描述翻译为:1.2.83
之前的包com.alibaba:fastjson
通过绕过默认的autoType
关闭限制,容易受到不受信任数据的反序列化攻击,这在某些情况下是可能的。利用此漏洞可以攻击远程服务器。解决方法:如果无法升级,可以启用[safeMode]
升级的好处
- 升级
com.alibaba:fastjson
到1.2.83
版本是个不错的选择,因为它包含了许多修复程序和新特性 - 在
1.2.83
版中,fastjson
修复了几个安全漏洞,并增加了对Java 15
的支持 - 此外,它还改进了算法和性能,提高了序列化和反序列化速度。这些改进使
fastjson
更加可靠和高效,建议用户升级 - 请注意,升级到新版本可能需要一些代码更改以确保兼容性
- 在升级之前,请务必对您的应用程序进行全面测试,确保不会对应用程序造成影响
- 我自己在项目中升级后,测试没发现问题,基本的序列化、反序列化,包括时间参数、复杂对象,都没发现问题。毕竟我是从
1.2.66
升级到1.2.83
,都是1.2.x
,小版本更新,基本上都是兼容的 - 很多项目持续了很久,一些jar包依赖的版本,可能是很低版本的,这些版本就可能存在一些被发现和公布的漏洞
- 如果是部署在互联网的程序,或者本身对安全要求比较高,建议追踪主要
jar
包的版本变动,主动使用比较新的稳定版本 - 此次将项目里使用的
com.alibaba:fastjson
全部升级至1.2.83
fastjson2介绍
- 针对现在服务器的高内存配置和jdk的高版本发布,使用
com.alibaba.fastjson2 » fastjson2
也是一个不错的选择,根据官方文档,性能有不小的提升。待其更加稳定时,可以考虑纳入生产项目使用 fastjson2
是一个高性能的Java JSON
处理器,可以将Java
对象与JSON
之间进行互相转换。它支持Java
泛型和自定义序列化,具有比较高的解析速度和较小的内存占用,已经成为了Java
开发中最流行的JSON
处理库之一fastjson2
支持JSON
和Java
之间的双向转换,可以将JSON
字符串中的数据转化为Java
对象,也可以将Java
对象转化为JSON
字符串- 其具有简单易用的
API
和良好的性能,可以广泛应用于各种Java
应用中,尤其是Web
应用的开发中 fastjson2
在解析JSON
字符串时,可以忽略不需要的字段,支持循环引用和类似2017-02-03
这样的日期格式- 另外,
fastjson2
还支持JSONP
格式的数据传输,可以在Web
应用中使用 fastjson2
在开发Java
应用中处理JSON
数据方面具有广泛的适用性,可以提供快速、高效、简单的JSON
数据解析方案fastjson2
与fastjson
相比,最主要的改进在于其解析性能优化得更好,因为编写了更高效的算法,也修复了一些解析器中的一些错误。因此,在处理大数据量、复杂的JSON
数据结构时,fastjson2
能够提供更快的速度和更稳定的性能。同时,fastjson2
也增强了JSON
的验证机制,更严谨地进行数据格式的校验,提高了数据的可靠性和安全性。除此之外,Fastjson2
适用于更广泛的Java
版本,能够支持Java 15
及以上版本- 只不过,
fastjson2
替换fastjson
这种比较大的变动,肯定要进行代码适配了