fastjson/jackson对getter,setter和constructor的区分

在复现完fastjson1.2.24-1.2.80和jackson的所有相关漏洞后,总结的一些规则

以下均指对json的反序列化过程

setter

fastjson调用setter:遍历所有方法,找出所有满足setter要求的方法,再根据传入的json去反射调用

jackson调用setter:直接对传入的json中的字段拼接上set,然后去取setter

其实二者一样,但是fastjson不能调用私有和受保护setter,而jackson可以

getter

fastjson调用getter:

1、没有setter方法,有getter方法。且getter满足:参数长度为0,返回类型是属于Collection 或其子类、Map 或其子类、AtomicBoolean、AtomicInteger、AtomicLong的一种

2、fastjson>=1.2.36 可用$ref调用getter

解析函数里有JSON.toJSON,还会调用getter(parseObject)

jackson调用getter:

1、没有setter,有getter方法。可以直接反序列化调用

2、jackson-databind&core&annotations>=2.13.3,通过POJONode调用getter

构造方法

fastjson调用构造方法:

  • 如果存在无参构造方法,则将其作为构造方法
  • 否则使用参数数量最多且排在最前面的构造方法。

jackson调用构造方法:

  • 按照顺序,如果有参构造的参数能对应上,直接调用
相关推荐
AD钙奶-lalala24 分钟前
Mac OS上搭建 http server
java
皮皮林5514 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904274 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_4 小时前
异步编程CompletionService
java
DKPT5 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
Highcharts.js5 小时前
Highcharts 数据源安全最佳实践:保障数据安全,助力可视化可信部署
安全·highcharts
sibylyue5 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子5 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
专注API从业者5 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
Suckerbin5 小时前
LAMPSecurity: CTF5靶场渗透
笔记·安全·web安全·网络安全