fastjson 真就突出一个阴魂不散

2022-05-25 09:52:12 +08:00
 fanxasy
接集团预警通报 2022 年第 13 号:监测发现,Java 开发组件 fastjson 存在反序列化漏洞。fastjson 被众多 java 软件作为组件集成,广泛存在于 java 应用的服务端代码中。攻击者可利用上述漏洞实施任意文件写入、服务端请求伪造等攻击行为,造成服务器权限被窃取、敏感信息泄漏等严重影响。此次事件影响 fastjson 1.2.80 及之前所有版本。目前,已发布 fastjson 最新版本 1.2.83 以修复该漏洞,组件升级地址为: https://github.com/alibaba/fastjson/releases/tag/1.2.83 。请各系统建设部门及时排查梳理受影响情况,在确保安全的前提下修复漏洞、消除隐患,提高网络系统安全防护能力,严防网络攻击事件。同时,加强安全监测,做好应急处置准备,发现突出情况要迅速处置并第一时间报告数据中心。
14070 次点击
所在节点    Java
97 条回复
6IbA2bj5ip3tK49j
2022-05-25 21:44:01 +08:00
至于使用静态 JSON.xxxx 方法好,还是注入好,这个涉及到个人偏好问题了。
XhstormR02
2022-05-25 22:09:07 +08:00
@xgfan 静态就不用 new 了,像 jackson 还要得自己 new ,小白说这可太复杂了,狗头保命。我站 boot ,boot 用啥我用啥
HiShan
2022-05-25 22:09:56 +08:00
请问在座的各位能写一个又快又安全的 JSON 库出来吗?又要用又要说别人垃圾漏洞多。还能扯到 Java 垃圾连个自带的 json 库都没有。。不能做一个有礼貌的伸手党吗?
sprite82
2022-05-25 22:11:30 +08:00
@xgfan writeValueAsString 和 toJSONString ,我觉得后者更直白些,我感觉不爽的是 Jackson 会抛异常,我要专门处理它,所以我一般会写个工具类,用 fastjson 的 api 名字来包一下 Jackson 。静态和注入,我觉得综合考虑还是静态更好,注入的话没法直接在静态方法中使用
Bromine0x23
2022-05-25 22:41:01 +08:00
只能说对应大部分开发者来说易用性确实大于可扩展性。
性能上的话,当下 fastjson1 对比 jackson 已经没优势了: https://github.com/fabienrenaud/java-json-benchmark
locochen
2022-05-25 23:00:20 +08:00
这个标题, 有的那啥了.
开源是好事, 选择使用, 就要有风险预期. 不然资深开发拿那么高工资, 是玩了.
Naccl
2022-05-25 23:10:23 +08:00
代码洁癖不能忍受自己的 spring 项目额外依赖个 fastjson
Dregs2
2022-05-25 23:59:51 +08:00
vert.x 里对 jackson 的封装蛮好用的
aragakiyuii
2022-05-26 00:00:25 +08:00
@AlkTTT 求问一下 easyexcel 有啥替代品吗😂
leeg810312
2022-05-26 00:10:09 +08:00
.net 和 Java 都写,还是.net 好,json 序列化只有 2 个库,一个官方一个 Newtonsoft ,用到现在也没有听到哪个有重大漏洞。
seepiner
2022-05-26 00:35:29 +08:00
可以用这个封装 jackjson 的库
<dependency>
<groupId>com.seepine</groupId>
<artifactId>json</artifactId>
<version>0.0.2</version>
</dependency>

主要封装了个 J sonObject 以及提供成静态方法
JsonObject jsonObject = Json.parseObj("jsonStr");
ArrayNode arrayNode = Json.parseArray("jsonStr");
Bean bean = Json.parse("jsonStr", Bean.class);
String jsonStr = Json.toJson(bean);
micean
2022-05-26 00:47:18 +08:00
jackson 还是结合 kotlin 最好用
xuanbg
2022-05-26 05:02:11 +08:00
说什么 jackjson 的 api 难用的,就不能自己简单封装几个静态方法么?再说,你们都用不到深拷贝和类型转换的么?
willygeek007
2022-05-26 09:06:20 +08:00
Bugjson
bthulu
2022-05-26 09:20:38 +08:00
@xuanbg jackson 漏洞也没少啊。fastjson 国内用的多,尤其阿里用的多,国内好多黑灰产都在研究 fastjson 的漏洞,导致看起来 fastjson 的漏洞比 jackson 多不少。就跟 windows 上木马病毒比 linux 多一个道理,并不是 windows 不行,用的人多了,自然就有人来研究各种奇奇怪怪偏门的漏洞了,这反而证明了这个项目非常成功。
AlkTTT
2022-05-26 09:21:00 +08:00
@aragakiyuii 复杂的用原生 poi ,简单的用 hutool
wupher
2022-05-26 09:26:46 +08:00
写开源软件还真就不是轻松的活
ZeroDu
2022-05-26 10:21:49 +08:00
有一说一:fastjson api 确实易用。不用各种处理异常; 还有 nacos 确实比其他注册中心 /配置中心好用多。一套搞定不折腾
zhongjun96
2022-05-26 10:42:51 +08:00
@xuanbg 特地试了一下,怎么解析下划线和驼峰两种形式的 json ?
比如有些接口返回的 {"user_name":"aa"},有些接口{"userName":"aa"}。bean 字段 userName 。
自己封装静态方法只能指定一种映射方式,支持了下划线驼峰就会不支持。
bthulu
2022-05-26 11:14:26 +08:00
@zhongjun96 类里额外加一个 void setUser_name(xxx)的方法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/855129

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX