当前位置: 首页 > news >正文

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

  • 按照顺序,如果有参构造的参数能对应上,直接调用

http://www.mrgr.cn/news/58429.html

相关文章:

  • ubuntu linux安装nessus企业版
  • 三维管线管网建模工具MagicPipe3D V3.5.3
  • 【Docker】docker | 部署nginx
  • 渗透测试导学
  • .NET 10月红队武器库和资源集合 (上期)
  • JVM—类的生命周期
  • 代码随想录算法训练营第四十三天|322. 零钱兑换, 279. 完全平方数,139. 单词拆分
  • 揭秘!亿赛通和Ping32如何以加密技术筑牢防泄密防线?
  • MTK使用atms获取app包名编译报错
  • qss设置Q_PROPERTY不生效
  • 从零搭建Lazada自养号高效测评体系
  • 社交媒体与客户服务:新时代的沟通桥梁
  • vue2项目 上传文件时部分信息上传失败,并下载失败信息(.xlsx文件模板)
  • 什么是域名?什么是泛域名?
  • 多线程加锁与手搓智能指针实践
  • 深入拆解TomcatJetty——Tomcat如何实现IO多路复用
  • 获取每个访客的第一条访问日志(获取网站的UV)
  • 「 自动化测试 」面试题..
  • 请简述同步和异步的区别。
  • 【嵌入式】全面解析温度传感器:PT1000、热电偶、热敏电阻与红外传感器的原理与应用
  • 【密码学】隐语HEU同态加密算法解读
  • 5G NR NARFCN计算SSB中心频率MATLAB实现
  • 『 Linux 』网络传输层 - UDP
  • Python自动化测试+邮件推送+企业微信推送+Jenkins
  • css绘制s型(grid)
  • DDD重构-实体与限界上下文重构