dubbo版本升级关于序列化问题

最近两年公司项目dubbo进行升级,从2.5.6升级至2.6.9
至今又升级为2.6.10

主要升级的原因是序列化存在漏洞,需要使用hession协议进行序列化操作。

2.6.9

在2.6.9引入白名单,因为hessian默认支持java.*的所有类进行序列化,所以重写AbstractHessian2FactoryInitializer配置白名单参数
是否开启白名单

  *static String WHITELIST = "dubbo.application.hessian2.whitelist";*

白名单允许序列化的类路径

  *static String ALLOW = "dubbo.application.hessian2.allow";*

黑名单序列化的类路径

  *static String DENY = "dubbo.application.hessian2.deny";*

把所需要的类路径加上,否则会报错heesian序列化异常,如
严重:

com.sinosig.sl.sssc.dto.form.Page's interfaces: java.io.Serializable in blacklist or not in whitelist, deserialization with type 'HashMap' instead.
com.alibaba.com.caucho.hessian.io.HessianFieldException: com.sinosig.sl.sssc.dto.result.ResultDTO.resultValue: java.util.Map cannot be assigned from null

不在名单里,hessian无法进行序列化所以当作hashMap去处理序列化,失败。

升级为2.6.12

dubbo改写了序列化方式,优化了早期的序列化漏洞,引入文件默认配置读取一些文件不允许hessian序列化,本次默认不支持java.*的白名单,需写入自行配置,同2.6.9一样重写AbstractHessian2FactoryInitializer,只是将java.*加入白名单配置即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dubbo是一个高性能的企业级分布式服务框架,用于构建高性能、可扩展的分布式服务架构。在升级过程中,从Dubbo 2.7.3到2.7.7,如果出现了数据丢失的问题,可能是由于以下几个原因: 1. **版本兼容性差异**:新版本可能对数据序列化或传输协议做了优化或改动,如果没有正确配置兼容性选项,旧版服务可能无法解析新版传递的数据格式。 2. **依赖更新**:检查是否有新的依赖项引入,这些依赖可能改变了数据处理方式或接口定义,导致旧版服务无法正确处理数据。 3. **配置变更**:在升级过程中,某些配置可能被默认更改或移除,例如服务注册和发现机制的变化,可能会影响到数据的传递。 4. **服务接口改变**:如果服务提供者接口(Service Interface)做了修改,而消费者没有同步更新,可能会导致数据传递错误。 5. **异常处理**:新版本可能增加了更严格的异常捕获和处理,这可能导致某些错误不再被透明地忽略,从而导致数据丢失。 为了解决这个问题,你可以尝试以下步骤: - **检查日志**:查看服务提供者和消费者的日志,寻找关于数据丢失的错误信息,这有助于定位问题所在。 - **对比配置**:确保升级前后配置文件的一致性,并确认所有涉及到数据传输的配置选项是否正确。 - **逐步迁移**:可以先将部分服务升级到新版本,观察数据传输情况,确认问题是否依然存在。 - **复现问题**:在测试环境中重现问题,以便更好地分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值