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

news2024/11/15 12:19:11

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

  • 本文概览
    • 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 版本并且标记清楚了是否有安全漏洞以及使用这个版本的开源库个数。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047227.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习Flutter时需要了解的背景知识

关键词:Flutter、移动UI框架、跨平台、Widget、高效开发、自定义Widget、热重载、性能优化 摘要:Flutter是Google推出的开源移动UI框架,旨在支持高效构建高质量的原生应用,同时兼容iOS和Android平台。它通过热重载技术实现高效开发…

【机器人学】7-1.六自由度机器人自干涉检测-总体算法介绍

目录 前言 机器人自干涉检测方法 一 机械臂各连杆等效 二 确定一个圆柱体 三 圆柱体的空间变换 四 空间几何分析 五 关键点总结 前言 机器人在运行过程中,可能发生碰撞,碰撞物可以是外界物体,也可以是机器人自己的关节间发生碰撞…

Docker部署Eclipse Mosquitto开源MQTT的消息代理环境步骤(实践)

1.前言 Eclipse Mosquitto是一个开源(EPL/EDL许可)的消息代理,实现了MQTT协议的版本5.0、3.1.1和3.1。Mosquitto是轻量级的,适用于从低功耗单板计算机到完整服务器的所有设备。 MQTT协议提供了一种轻量级的消息传输方法&#xf…

渗透测试-行业术语

1.肉鸡 肉鸡用来比喻哪些可以随意被我们控制的计算机,可以是普通的个人电脑,也可以是大型服务器或者其他网络设备,我们可以像操作自己的电脑一样操作他们而不被发觉。 2.木马 表面上伪装成了正常程序,但是当程序被运行的时候&a…

【gitlab】gitlab-ce:17.3.0-ce.0 1:使用docker engine安装

ce版本必须配置代理。 极狐版本可以直接pull 社区版GitLab不支持Alibaba Cloud Linux 3,本操作以Ubuntu/Debian系统为例进行说明,其他操作系统安装说明,请参见安装社区版GitLab。 docker 环境重启 sudo systemctl daemon-reload sudo systemctl restart docker脚本安装 安裝…

趣味算法------约瑟夫环

目录 问题概述: 问题解析: 图文示意: 处决开始: 第一轮结束: 第二轮结束: 最后一轮: 寻找规律: 最终思路: 具体代码: 总结: 问题概述&…

【Pytorch02】开发环境准备

开发环境准备 安装教程 视频 开发环境 Python 3.7 Anaconda 3.5.1CUDA 10.0Pycharm Community 检测是否安装完毕 conda --version # 检查Anaconda是否安装完毕 nvcc -V # 检查CUDA是否安装完毕

ES-分布式搜索引擎

DSL查询文档 精确查询 、 我附近的人 实例 根据页码跳转无法使用 高亮

Flandre Scarlet的精致蕾丝上半身造型,金发飘逸

Flandre Scarlet戴zun帽,上半身细节极其精致的蕾丝装饰,面带微笑,双臂自然下垂,金色头发飘逸。 正向提示词 Flandre Scarlet,zun hat,extremely detailed lace,:) , upper body,arms at sides,lace,golden hairFlandre Scarlet&…

AI学习记录 - transformers的decoder和encoder中的自注意力矩阵和掩码矩阵的数据处理

掩码掩码,指的是掩盖住后面的词汇的词向量对我当前词汇造成影响。把PAD字符设置成负无穷大,概念上不叫掩码,只是计算方式和掩码一样。 怎么生成掩码,在非掩码注意力矩阵中,把PAD词向量每个维度设置成负无穷大&#xf…

基于web框架的协同过滤的美食推荐系统【数据爬虫、管理系统、数据可更新、样式可调整】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍研究背景研究的目的与意义协同过滤算法基于用户的协同过滤算法定义基于物品的协同过滤算法的定义 数据库设计db_food(美食信息表)db_collect(美食…

加载torch报错及如何解决

Failed to import pytorch fbgemm.dll or one of its dependencies is missing. 这往往是你的电脑缺少了某些微软的dll文件。所以报错了。 解决办法 前往https://www.dllme.com/dll/files/libomp140_x86_64?sortupload&arch0x8664 点击。 按照你的电脑是否为64位进行选择…

vue3-03-创建响应式数据的几种方法

响应式数据 一、 ref 创建:响应式数据1)ref 创建:基本类型的响应式数据2)ref 创建:对象类型的响应式数据3)volar 插件自动添加 .value4)customRef 自定义 ref 二、 reactive 创建:响…

联想2025校招 技术研究方向试卷

目录 1. 第一题2. 第二题 ⏰ 时间:2024/08/16 🔄 输入输出:ACM格式 ⏳ 时长:1.5h 本试卷还有选择题部分,但这部分比较简单就不再展示。 1. 第一题 题目描述 小明正在神奇苹果园里工作。这个苹果园里一共有 n n n 棵…

C#堆排序算法

前言 堆排序是一种高效的排序算法,基于二叉堆数据结构实现。它具有稳定性、时间复杂度为O(nlogn)和空间复杂度为O(1)的特点。 堆排序实现原理 构建最大堆:将待排序数组构建成一个最大堆,即满足父节点大于等于子节点的特性。将堆顶元素与最后…

海康VisionMaster使用学习笔记4-快速匹配模块

快速匹配模块 快速匹配包括基本参数,特征模板,运行参数,结果显示 基本参数 可以修改图像源和模块的ROI区域. 特征模版 可以配置管理所有的模版,点击创建可以新增模版,也可以通过载入加载本地的模型 建立新模版 点击创建,可以选择当前图像或本地图像进行建模 模版存图按…

【ASFF】《Learning Spatial Fusion for Single-Shot Object Detection》

arXiv-2019 https://github.com/GOATmessi7/ASFF 文章目录 1 Background and Motivation2 Related Work3 Advantages / Contributions4 Method4.1 Strong Baseline4.2 Adaptively Spatial Feature Fusion4.2.1 Feature Resizing4.2.2 Adaptive Fusion 4.3 Consistency Propert…

DVWA | CSRF(LowMedium)攻击的渗透实践

目录 概述 Low Medium 概述 CSRF(Cross-Site Request Forgery,跨站请求伪造) 是一种网络攻击方式。 通过伪造当前用户的行为,让目标服务器误以为请求由当前用户发起,并利用当前用户权限实现业务请求伪造。 例如&a…

如何将excel以文本形式储存的数字一键转换为数字

有时候一些软件给出的数据格式很恶心,为了方便计算常常以数字粘贴到新表,但随之而来新问题,以文本储存的公式无法用公式计算,怎么办啊 方法一:使用“转换为数字”功能 (对数字少时用) 当Excel检测到某个单…

得到任务式 大模型应用开发学习方案

根据您提供的文档内容以及您制定的大模型应用开发学习方案,我们可以进一步细化任务式学习的计划方案。以下是具体的任务式学习方案: 任务设计 初级任务 大模型概述:阅读相关资料,总结大模型的概念、发展历程和应用领域。深度学…