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调用构造方法:

  • 按照顺序,如果有参构造的参数能对应上,直接调用
相关推荐
pshdhx_albert2 小时前
AI agent实现打字机效果
java·http·ai编程
沉鱼.443 小时前
第十二届题目
java·前端·算法
赫瑞4 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
上海云盾安全满满4 小时前
游戏业务使用什么防护最安全
安全·游戏
周末也要写八哥5 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
惜茶5 小时前
vue+SpringBoot(前后端交互)
java·vue.js·spring boot
杰克尼6 小时前
springCloud_day07(MQ高级)
java·spring·spring cloud
云栖梦泽6 小时前
AI安全合规与治理:行业发展趋势与职业展望
大数据·人工智能·安全
小陈工6 小时前
2026年4月2日技术资讯洞察:数据库融合革命、端侧AI突破与脑机接口产业化
开发语言·前端·数据库·人工智能·python·安全
NHuan^_^8 小时前
SpringBoot3 整合 SpringAI 实现ai助手(记忆)
java·人工智能·spring boot