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

  • 按照顺序,如果有参构造的参数能对应上,直接调用
相关推荐
Program Debug1 分钟前
Mac安装JDK
java·开发语言·macos
计算机毕设指导65 分钟前
基于微信小程序的家政服务与互助平台【源码文末联系】
java·spring boot·mysql·微信小程序·小程序·tomcat·maven
一起养小猫6 分钟前
LeetCode100天Day8-缺失数字与只出现一次的数字
java·数据结构·算法·leetcode
Coder_Boy_11 分钟前
基于SpringAI企业级智能教学考试平台智能作业模块全业务闭环方案
java·人工智能·spring·spring cloud
Geoking.15 分钟前
【Java】深入理解 Java 枚举(Enum)
java·开发语言
像风一样的男人@28 分钟前
python --生成ico图标
java·python·spring
zhaokuner29 分钟前
06-聚合与一致性边界-DDD领域驱动设计
java·开发语言·设计模式·架构
技术小泽40 分钟前
DDD领域设计精讲
java·后端·设计模式·架构
SatVision炼金士1 小时前
Mac 安装Homebrew记录
java·elasticsearch·macos·maven
星空椰1 小时前
jvms Java 版本管理工具
java·开发语言