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

如何选择较为安全的第三方依赖版本?

如何选择较为安全的第三方依赖版本?

  • 本文概览
    • 1.1 前言
      • 1.1.1 学会看第三方开源库的版本发布说明
      • 1.1.2 尽可能使用 starer 匹配的第三方开源库
      • 1.1.3 参考Maven 中心仓库的安全警告信息

本文概览

本篇博文分享如何选择较为安全的第三方依赖版本的方法。

1.1 前言

众所周知,在Java 研发的过程中,我们一般习惯通过mavengradle 管理项目中的第三方依赖包,以便于辅助我们提高开发业务功能的效率。

而第三方依赖包,往往随着历史的变迁,会迭代很多版本,尤其当某些旧版本的第三方依赖包出现bug或安全漏洞的时候,一般安全部会提醒我们更新我们的第三方依赖包,但是新版本有很多,我们应该选择哪一个版本呢?

1.1.1 学会看第三方开源库的版本发布说明

我们以最近要升级Spring Boot 到2.7.18 为例,假如我们的项目需要更新MyBatis Plus 的版本,那么你应该升级到哪个版本呢?

这里聪哥那边学会的一个很好的方法,就是查看第三方开源库的版本说明,具体步骤如下:

我们一般很容易在网上检索到MyBatis Plus 的代码仓库.

https://github.com/baomidou/mybatis-plus
在这里插入图片描述

然后点击上图里面Release 文字下面部分的超链接。

然后就可以看到各个版本的更新说明:
在这里插入图片描述
其中有一条,feat: SpringBoot升级至2.7.18和3.2.6

所以,我们选择mybatis plus 3.5.7 是较为合适的选择。

当然,我们也需要升级后对系统进行功能回归测试。

1.1.2 尽可能使用 starer 匹配的第三方开源库

众所周知,spring boot 提供了很多starter,如果使用starer 推荐的第三方开源库的依赖版本,有一个好处就是:spring 团队已经对这些依赖组进行了充分测试,我们可以相对安全地使用这些库。

Spring Boot 与 Spring Cloud 的兼容性说明:https://spring.io/projects/spring-cloud
在这里插入图片描述

spring boot 和kafka 之间的版本兼容性说明:https://spring.io/projects/spring-kafka
在这里插入图片描述

Spring Boot 版本和其他第三方开源库的兼容性说明:
● Spring Boot最新版对其他第三方开源库的依赖兼容关系
● Spring Boot 1.5.x 对其他第三方开源库的依赖兼容关系
● Spring Boot 2.5.x 对其他第三方开源库的依赖兼容关系
● Spring Boot 2.7.x 对其他第三方开源库的依赖兼容关系

PS:
更多升级细节参考:
Spring Boot 3 之SpringBoot 版本升级最佳实践指南

其他版本以官网提供信息为准。

1.1.3 参考Maven 中心仓库的安全警告信息

为了演示使用说明,这里以业界熟知的Guava 为例, 让我们来看看当在项目中引入Guava 这个开源库的时候,应该如何选择一个较为安全的版本。

这里分享一个很棒安全性做的也很不错的中心仓库网站。

https://mvnrepository.com/

打开上面链接后需要经过人机校验

之后我们输入检索依赖的关键词: “guava“
在这里插入图片描述

PS:

  • 小伙伴可以今后用这个网址来检索需要的几乎java 领域所有的第三方开源库.当然,公司自己封装的私有包除外。
  • 之后我们可以看到有多个guava 版本并且标记清楚了是否有安全漏洞以及使用这个版本的开源库个数。

在这里插入图片描述
当然,不管哪种方式,都需要在选择后,进行充分测试后方可使用,以上就是推荐的一些选择较为安全的第三方依赖版本的策略。

交流即分享,分享才能进步!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [C++][opencv]基于opencv实现photoshop算法可选颜色调整
  • 微前端架构下的应用版本回退策略与实践
  • C语言 | Leetcode C语言题解之第341题扁平化嵌套列表迭代器
  • idea付费插件,哪个比较好用?
  • 书生浦语大模型全链路开源开放体系学习
  • Docker和虚拟机的区别详细讲解
  • Android T about screen rotation(二)
  • spring boot 接收第三方mq消息
  • 基于JAVA美容院管理系统(源码+论文+讲解等)
  • Windows利用ssh免密码登录Linux
  • 应急响应-DDOS-典型案例
  • Jmeter接口测试断言详解
  • Windows 系统下 MongoDB和PostgreSQL数据库数据的备份和恢复
  • 使用Redis记录错误次数、序列号锁定和冻结时间的实现步骤示例[超详细]
  • WUP-MY-LABEL-PRINTER 旻佑热敏打印机标签打印uniapp插件使用说明
  • 【Leetcode】101. 对称二叉树
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • 77. Combinations
  • Apache Zeppelin在Apache Trafodion上的可视化
  • CSS3 变换
  • E-HPC支持多队列管理和自动伸缩
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • Invalidate和postInvalidate的区别
  • maya建模与骨骼动画快速实现人工鱼
  • Solarized Scheme
  • webpack入门学习手记(二)
  • 编写高质量JavaScript代码之并发
  • 解析带emoji和链接的聊天系统消息
  • 聚簇索引和非聚簇索引
  • 前端攻城师
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 算法系列——算法入门之递归分而治之思想的实现
  • 源码之下无秘密 ── 做最好的 Netty 源码分析教程
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 仓管云——企业云erp功能有哪些?
  • 组复制官方翻译九、Group Replication Technical Details
  • ​业务双活的数据切换思路设计(下)
  • # centos7下FFmpeg环境部署记录
  • # Java NIO(一)FileChannel
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ######## golang各章节终篇索引 ########
  • (4) PIVOT 和 UPIVOT 的使用
  • (C++二叉树05) 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (笔试题)分解质因式
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (接口自动化)Python3操作MySQL数据库
  • (三)uboot源码分析
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)Mysql的优化设置
  • .apk文件,IIS不支持下载解决
  • .Net Core 生成管理员权限的应用程序
  • .NET 药厂业务系统 CPU爆高分析