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

Dubbo3序列化安全问题

序列化安全

在 Dubbo 3.0 中,序列化协议的安全性得到了加强。

1. 序列化安全性升级

  • Triple 协议:

    • 推荐使用 Triple 协议 的非 Wrapper 模式,该模式在安全性上更为严格。
    • 需要开发人员编写 IDL(接口描述语言)文件,这虽然增加了开发的复杂性,但提高了序列化的安全性。
    • 默认情况下,该协议是安全的,因此适合高安全性需求的应用场景。
  • Wrapper 模式:

    • 允许与其他序列化数据兼容,提供更好的兼容性,但在安全性方面可能存在潜在风险。
    • 对于 Hessian2 协议,推荐高安全属性的用户开启白名单模式,以限制可反序列化的类。
    • 默认情况下,框架开启了黑名单模式,拦截恶意调用,以增强安全性。

2. 安全性最佳实践

  • 开启 Token 鉴权机制:
    • 必须使用其他序列化协议的应用,建议开启 Token 鉴权机制,以防止未授权请求对 Provider 的安全威胁。
    • 启用 Token 鉴权时,还需要同时开启注册中心的鉴权功能,以确保整个调用链的安全性。

3. 推荐措施

  • 根据需求选择协议:

    • 如果应用对安全性要求高,建议优先考虑使用 Triple 协议的非 Wrapper 模式。
    • 对于需要兼容性但安全性要求相对较低的场景,可以使用 Wrapper 模式,但需要开启安全机制。
  • 编写 IDL 文件:

    • 对于使用 Triple 协议的项目,建议认真编写 IDL 文件,确保接口的清晰和安全性。
  • 使用 Token 鉴权:

    • 确保在项目中实现 Token 鉴权,确保请求来源的可靠性。

4. 总结

  • Dubbo 3.0 在序列化安全方面的加强是为了应对日益严峻的安全挑战,开发者需要根据实际需求选择合适的序列化协议,并注意实现必要的安全措施,以保护服务的安全性和完整性。

类检查机制概述

特性说明
  • 类检查机制确保服务提供者与消费者之间的兼容性和安全性,防止因类版本不匹配、方法签名不兼容或类缺失而引发的问题。
使用场景
  • 适用于需要维护版本兼容性和安全性的场合,尤其是在微服务架构中,多个服务可能会涉及不同版本的类。

使用方式

  • 该机制自 Dubbo >= 3.1.6 开始支持,适用于 Hessian2、Fastjson2 序列化和泛化调用,其他序列化方式暂不支持。

检查模式

  • 检查模式分为三个级别:

    • STRICT(严格检查):
      • 禁止反序列化所有不在允许序列化列表(白名单)中的类。
    • WARN(告警):
      • 禁止序列化所有在不允许序列化列表(黑名单)中的类,同时在反序列化不在允许序列化列表(白名单)中的类时,记录告警日志。
    • DISABLE(禁用):
      • 不进行任何检查。
  • 默认配置:

    • 3.1 版本中,默认为 WARN 级别。
    • 3.2 版本中,默认为 STRICT 级别。 

配置方式

  • 通过 ApplicationConfig 配置:

    ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setSerializeCheckStatus("STRICT");
  • 通过 Spring XML 配置:

  • <dubbo:application name="demo-provider" serialize-check-status="STRICT"/>
  • 通过 Spring Properties / dubbo.properties 配置:

    dubbo.application.serialize-check-status=STRICT
  • 通过 System Property 配置:

    -Ddubbo.application.serialize-check-status=STRICT
  • 日志提示:

    • 配置成功后,可以在日志中看到类似以下的提示:
INFO utils.SerializeSecurityManager: [DUBBO] Serialize check level: STRICT

注意事项

  • 在同一进程(Dubbo Framework Model)下,如果多个应用配置了不同的检查模式,最终将生效“最宽松”的级别。例如,若一个配置为 STRICT,另一个为 WARN,则最终生效 WARN 级别。

Serializable 接口检查

  • 检查模式:

    • 分为两个级别:
      • true:开启检查,拒绝反序列化所有未实现 Serializable 的类。
      • false:关闭检查。
  • 默认配置:

    • Dubbo 中默认配置为 true 开启检查。
  • 配置方式:

    • 通过 ApplicationConfig 配置:

      ApplicationConfig applicationConfig = new ApplicationConfig(); applicationConfig.setCheckSerializable(true);
    • 通过 Spring XML 配置:

      <dubbo:application name="demo-provider" check-serializable="true"/>
    • 通过 Spring Properties / dubbo.properties 配置:

      dubbo.application.check-serializable=true
    • 通过 System Property 配置:

      -Ddubbo.application.check-serializable=true
  • 日志提示:

    • 配置成功后,可以在日志中看到类似以下的提示:
INFO utils.SerializeSecurityManager: [DUBBO] Serialize check serializable: true

注意事项

  • 在同一进程下,如果多个应用配置了不同的 Serializable 接口检查模式,最终生效“最宽松”的级别。
  • 目前尚未打通 Hessian2、Fastjson2 内置的 Serializable 检查配置。
  • 对于泛化调用,仅需配置 dubbo.application.check-serializable 修改检查配置。
  • 对于 Hessian2 序列化,需要同时修改 dubbo.application.check-serializabledubbo.hessian.allowNonSerializable 两个配置。
  • 对于 Fastjson2 序列化,目前暂不支持修改。

总结

  • 类检查机制和 Serializable 接口检查是 Dubbo 3.0 为了提升安全性和兼容性而引入的重要特性。合理配置这些检查机制,可以有效防止因类版本不匹配和反序列化风险而带来的潜在问题。在开发和部署微服务时,建议根据应用需求合理配置相应的检查模式和接口检查。

相关文章:

Dubbo3序列化安全问题

序列化安全 在 Dubbo 3.0 中&#xff0c;序列化协议的安全性得到了加强。 1. 序列化安全性升级 Triple 协议: 推荐使用 Triple 协议 的非 Wrapper 模式&#xff0c;该模式在安全性上更为严格。需要开发人员编写 IDL&#xff08;接口描述语言&#xff09;文件&#xff0c;这虽…...

秒懂Linux之共享内存

目录 共享内存概念 模拟实现共享内存 创建key阶段 ​编辑创建共享内存阶段 删除共享内存阶段 查看共享内存属性阶段 挂接共享内存到进程阶段 取消共享内存与进程挂接阶段 进程通信阶段 添加管道改进版 共享内存函数 shmget函数 shmat函数 shmdt函数 shmctl函数 共享内存概念 共…...

【计算机网络】网络层协议解析

网络层的两种服务IPv4分类编址划分子网无分类地址 IPv4地址应用IP数据报的发送和转发过程主机发送IP数据报路由器转发IP数据报 IPv4数据报首部格式ICMP网际控制报文协议虚拟专用网VPN与网络地址转换NAT 网络层主要任务是实现网络互连&#xff0c;进而实现数据包在各网络之间的传…...

sqlist void reverse(SqList A)

#include <stdlib.h> #include <stdio.h> #include <iostream> using namespace std; #define INIT_SIZE 5 #define INCREMENT 10 # define OK 1 # define ERROR 0/* 定义ElemType为int类型 */ typedef int ElemType; void input(ElemType &s); void out…...

聊聊Thread Local Storage

聊聊ThreadLocal 为什么需要Thread Local StorageThread Local Storage的实现PThread库实现操作系统实现GCC __thread关键字实现C11 thread_local实现JAVA ThreadLocal实现 Thread Local Storage 线程局部存储&#xff0c;简称TLS。 为什么需要Thread Local Storage 变量分为全…...

WEB攻防-JS项目Node.js框架安全识别审计验证绕过

知识点&#xff1a; 1、原生JS&开发框架-安全条件 2、常见安全问题-前端验证&未授权 详细点&#xff1a; 1、什么是JS渗透测试&#xff1f; 在JavaScript中也存在变量和函数&#xff0c;当存在可控变量及函数调用即可参数漏洞 2、流行的Js框架有哪些&#xff1f; …...

STM32——SPI

1.SPI简介 SPI&#xff0c;是英语Serial Peripheral Interface的缩写&#xff0c;顾名思义就是串行外围设备接口。SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根线&#xff0c;节约了芯片的管脚&#xf…...

【云安全】云上资产发现与信息收集

一、云基础设施组件 1、定义 在云计算基础架构中&#xff0c;基础设施组件通常包括&#xff1a;计算、存储、网络和安全等方面的资源。例如&#xff0c;计算资源可以是虚拟机、容器或无服务器计算引擎&#xff1b;存储资源可以是对象存储或块存储&#xff1b;网络资源可以是虚拟…...

flask搭建微服务器并训练CNN水果识别模型应用于网页

一. 搭建flask环境 概念 flask:一个轻量级 Web 应用框架&#xff0c;被设计为简单、灵活&#xff0c;能够快速启动一个 Web 项目。CNN:深度学习模型&#xff0c;用于处理具有网格状拓扑结构的数据&#xff0c;如图像&#xff08;2D网格&#xff09;和视频&#xff08;3D网格&a…...

数据篇| 关于Selenium反爬杂谈

友情提示:本章节只做相关技术讨论, 爬虫触犯法律责任与作者无关。 LLM虽然如火如荼进行着, 但是没有数据支撑, 都是纸上谈兵, 人工智能的三辆马车:算法-数据-算力,缺一不可。之前写过关于LLM微调文章《微调入门篇:大模型微调的理论学习》、《微调实操一: 增量预训练(Pretrai…...

MySQL高阶1890-2020年最后一次登录

目录 题目 准备数据 分析数据 题目 编写解决方案以获取在 2020 年登录过的所有用户的本年度 最后一次 登录时间。结果集 不 包含 2020 年没有登录过的用户。 返回的结果集可以按 任意顺序 排列。 准备数据 Create table If Not Exists Logins (user_id int, time_stamp …...

update-alternatives官方手册

下述手册超链接都是英文&#xff0c;内容差不多&#xff0c;看一个就行 Debian系统的Ubuntu系统的《The Linux Programming Interface》图书上的...

cesium.js 入门到精通(5-2)

在cesium 的配置中 有一些参数 可以配置地图的显示 显示出 水的动态显示 山的效果 相当于一些动画显示的效果 var viewer new Cesium.Viewer("cesiumContainer", {infoBox: false,terrainProvider: await Cesium.createWorldTerrainAsync({requestWaterMask: tru…...

LINUX的PHY抽象层——PAL

英文原文参考&#xff1a; https://www.kernel.org/doc/html/latest/networking/phy.html 中文翻译参考&#xff1a;有关PHY抽象层的总结 https://blog.csdn.net/eydwyz/article/details/124753313 目录 1 前言2 PHY接口模式3 尽量使用PHY端的延时而不是MAC或PCB4 其他方式实现…...

优先级队列(堆)

目录 优先级队列 堆的概念 堆的创建 堆的向下调整 堆的插入 完整代码 优先级队列 队列是一种先进先出的数据结构&#xff0c;有些时候操作的数据可能带有优先级&#xff0c;出队列时就需要优先级高的数据先出队列。 在这种情况下&#xff0c;数据结构应该提供两个最基本…...

帧率和丢帧分析理论

一、丢帧问题概述 应用丢帧通常指的是在应用程序的界面绘制过程中&#xff0c;由于某些原因导致界面绘制的帧率下降&#xff0c;从而造成界面卡顿、动画不流畅等问题。以60Hz刷新率为例子&#xff0c;想要达到每秒60帧&#xff08;即60fps&#xff09;的流畅体验&#xff0c;每…...

solidwork找不到曲面

如果找不到曲面 则右键找到选项卡&#xff0c;选择曲面...

mac安装JetBtains全家桶新版本时报错:Cannot start the IDE

mac安装JetBtains全家桶新版本时报错&#xff1a;Cannot start the IDE 前言报错信息解决方法 前言 作者使用的是Mac电脑&#xff0c;最近想要更新JetBrains相关工具的软件版本&#xff0c;但是在安装时突然报错&#xff0c;导致安装失败&#xff0c;现在将报错信息以及解决方…...

MVCC机制解析:提升数据库并发性能的关键

MVCC机制解析&#xff1a;提升数据库并发性能的关键 MVCC&#xff08;Multi-Version Concurrency Control&#xff09; 多版本并发控制 。 MVCC只在事务隔离级别为读已提交(Read Committed)和可重复读(Repeated Read)下生效。 MVCC是做什么用的 MVCC是为了处理 可重复读 和…...

如何使用Postman搞定带有token认证的接口实战!

现在许多项目都使用jwt来实现用户登录和数据权限&#xff0c;校验过用户的用户名和密码后&#xff0c;会向用户响应一段经过加密的token&#xff0c;在这段token中可能储存了数据权限等&#xff0c;在后期的访问中&#xff0c;需要携带这段token&#xff0c;后台解析这段token才…...

AMLP框架实战:基于MACE构建高精度机器学习势函数

1. 项目概述&#xff1a;当机器学习势函数遇上自动化管道在计算化学和材料科学领域&#xff0c;我们长久以来面临着一个核心矛盾&#xff1a;精度与效率的权衡。密度泛函理论&#xff08;DFT&#xff09;能提供接近实验的精度&#xff0c;但计算成本高昂&#xff0c;通常只能处…...

告别拍脑袋规划!用ArcGIS做绿道选线:如何科学量化坡度、水域、道路成本并加权计算

科学规划绿道的ArcGIS高阶技法&#xff1a;从成本栅格构建到最优路径生成绿道规划从来不是简单的"两点之间直线最短"&#xff0c;而是需要综合考虑地形、生态、人文等多维因素的复杂决策过程。传统规划中常见的"拍脑袋"决策方式&#xff0c;往往导致建成后…...

Windows文件夹共享

目标&#xff1a;同一局域网实现在一台计算机上共享文件夹&#xff0c;在另一台电脑访问一、电脑A 1.点击要共享的文件夹 -> 属性 -> 共享2.添加Everyone用户组3.控制面板中网络共享关闭密码保存&#xff0c;在访问时不用输入账号密码。二、电脑B 1.在文件资源管理器路径…...

Godot4 2D游戏开发避坑指南:TileMap绘制、节点顺序与相机设置的三个常见问题

Godot4 2D游戏开发避坑指南&#xff1a;TileMap绘制、节点顺序与相机设置的三个常见问题当你第一次用Godot4完成一个2D场景搭建时&#xff0c;那种成就感往往会被几个突如其来的bug瞬间击碎——角色神秘消失、背景纹丝不动、屏幕边缘出现诡异黑边。这些问题看似简单&#xff0c…...

电信运营商每月处理海量工单,如何不再出错?基于AI Agent的端到端自动化解决方案

在2026年的电信行业&#xff0c;海量工单处理已不再仅仅是效率问题&#xff0c;而是合规与生存的底线。随着2026年5月20日《电信和互联网服务 基础电信企业网上营业厅服务规范》国家标准的正式实施&#xff0c;监管层对“信息透明、流程闭环、计费精准”的要求达到了前所未有的…...

别急着扔!12年老ThinkPad X230升级SSD和内存后,Win10流畅得像新电脑

12年老ThinkPad X230重生指南&#xff1a;极简升级打造流畅办公利器每次打开抽屉看到那台积灰的ThinkPad X230&#xff0c;总有种说不出的情感。这款2012年问世的经典商务本&#xff0c;曾陪伴无数人度过加班到凌晨的夜晚。如今性能确实有些力不从心&#xff0c;但直接丢弃又觉…...

如何快速集成 react-native-bottom-sheet-behavior:5 分钟搞定 Android 底部弹窗

如何快速集成 react-native-bottom-sheet-behavior&#xff1a;5 分钟搞定 Android 底部弹窗 【免费下载链接】react-native-bottom-sheet-behavior react-native wrapper for android BottomSheetBehavior 项目地址: https://gitcode.com/gh_mirrors/re/react-native-bottom…...

OpenIPC开源固件:5分钟解锁网络摄像头的终极控制权

OpenIPC开源固件&#xff1a;5分钟解锁网络摄像头的终极控制权 【免费下载链接】firmware Alternative IP Camera firmware from an open community 项目地址: https://gitcode.com/gh_mirrors/fir/firmware 还在为网络摄像头的封闭系统而烦恼吗&#xff1f;想要完全掌控…...

氘可来昔替尼常见副作用为鼻咽炎头痛及腹泻,如何应对?

任何口服药物的临床价值&#xff0c;都必须在疗效与安全性的天平上找到精准的平衡点。氘可来昔替尼以PASI 75应答率的全面胜出证明了自己在银屑病治疗中的卓越地位&#xff0c;而其不良反应谱同样经过了严苛的临床验证。鼻咽炎、头痛和腹泻构成了这款药物最需关注的三大安全信号…...

工业云脑:06 现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例

06 现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例 今天第九篇06小节——现在就能干:树莓派边缘盒子+PLC,10分钟缺陷检测小案例。新手照着做10分钟就能跑起来,老手一看就知道这玩意儿省了多少钱。以前想上AI检测,得花几万块买专业边缘盒子;现在?树莓派5(RPi 5)…...