黑豹程序员-再不怕猪队友把配置文件上传git暴露数据库密码了

news2024/11/22 12:09:31

问题:

项目中含有配置文件,而配置文件中含有数据库的用户名和密码。而团队猪队友不论三七二十一玩git时全都上传git。git上开放给外部用户。外部用户获得数据库ip地址,用户名,密码。如果运维猪队友数据库为方便直接对外网开放。那后果会怎样可想而知。

如果防护呢?
我们可以用jasypt进行解决。引入其依赖,cmd执行加盐加密获得密码,在application.yml中的数据库密码就是要ENC(加密后密码)

1、jasypt

在这里插入图片描述
Jasypt也即Java Simplified Encryption是Sourceforge.net上的一个开源项目。
Jasypt这个Java类包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密。

为何使用它,厉害之处

注意哦,下面每次执行的加密结果是不一样的哦(腻害),如MD5,key相同结果相同,即使其它加密算法加上盐,破解难度大,但结果固定就可以通过字典表暴力破解。

而Jasypt 内部会创建一个随机 IV,这样每次即使相同的内容和盐得到的结果却不同。

2、基础概念

对称加密(Symmetric encryption):

加密和解密用同一个密钥的方法,即为对称加密算法。

哈希算法(Hash):

也叫散列、杂凑、摘要,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值,哈希算法是单向算法,即无法通过哈希值倒推原始数据。

口令散列(Password Hashing):

是将用户输入的密码通过一系列算法处理后,生成一个固定长度的散列值。口令散列常用语口令存储和密钥生成。在软件系统中,出于安全需求,用户密码不允许直接在数据库中明文存储的,通过对口令做哈希在入库,这样即是数据库泄露了,用户密码依然不会泄露。对于密钥生成的场景,需区分口令和密钥的区别,密钥是指加密过程中实际作用于加密算法的数据串,也叫key,key一般长度较长(16或32字节以上),实际场景中不太可能让用户去设置和记住这么长的密码,因此一般使用用户设置的短密码(也叫口令),用hash算法对口令做散列,用散列出的key加密数据。由于用户口令普遍较短,密码空间较小,重复率比较高,如果数据库发生泄漏,攻击者通过密码和散列值的映射表(又称彩虹表)用于多个用户口令的碰撞,于是在实际散列的时候需加入其它“值”合并计算。该值又称盐或salt,且每个用户的salt都不一样。如果攻击者试图通过彩虹表对口令做碰撞,需要针对每个用户生成口令长度(散列值隐去了实际口令长度)不同的彩虹表,大大增加了破解的难度。口令散列可简化为:hash(口令+salt)。

3、实战:SpringBoot整合jasypt

第一步:pom.xml依赖

		<!-- git,对敏感信息进行ENC加密 -->
        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jasypt/jasypt -->
        <dependency>
            <groupId>org.jasypt</groupId>
            <artifactId>jasypt</artifactId>
            <version>1.9.3</version>
        </dependency>

第二步:cmd执行命令获取加密后的密码

1、jar包目录

利用第二个依赖下载加密的程序
D:\workspace\env\mvnrepo\org\jasypt\jasypt\1.9.3

2、执行命令

java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=chenchen algorithm=PBEWithMD5AndDES

  • cp:classpath参数
  • input:需要加密的,如数据库的密码
  • password:加密的盐,提升加密个性化,增加破解难度,自定义值如:chenchen
  • algorithm:加密算法,默认:PBEWithMD5AndDES

3、执行结果:

在这里插入图片描述

第三步:application.yml

下面数据库密码进行加密,ENC代表其使用了加密。
同时也必须告诉SpringBoot加密的盐:jasypt.encryptor.password

server:
  port: 8060
jasypt:
  encryptor:
    password: chenchen
spring:
  application:
    name: bank-cif
  datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/bank-cif?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
    username: root
    password: ENC(hoPuXXMfIMRIJBk4a2kgsw==)

    hikari:
      minimum-idle: 5
      maximum-pool-size: 15
      auto-commit: true
      idle-timeout: 30000
      pool-name: DatebookHikariCP
      max-lifetime: 1800000
      connection-timeout: 30000
      connection-test-query: SELECT 1
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  mapper-locations: classpath:/mapper/*.xml
  type-aliases-package: com.bank.cif.entity

第四步:加密了,使用时就需要解密

启动类上加注解即可:@EnableEncryptableProperties

package com.bank.cif;

import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.ComponentScans;

//新版SpringBoot2.7.14它和之前版本配置包扫码方式不同
//加一个注解@ComponentScans,然后里面配置即可
@SpringBootApplication
@ComponentScans(@ComponentScan("com.bank.config"))
@EnableEncryptableProperties //对数据库密码进行加密,防止明码上传到git,造成问题
public class BankCifRunApp {

    public static void main(String[] args) {
        SpringApplication.run(BankCifRunApp.class, args);
    }

}

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

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

相关文章

CSS笔记——Display属性元素分类(行内、块,行内块)CSS默认样式及解决方案

1、display属性 ​ 可取值&#xff1a; ​ none 影藏&#xff08; 自身及其后代&#xff0c;一般用block值恢复&#xff09; ​ block 块元素 ​ inline 行内元素 ​ inline-block 行内块元素 ​ list-item (l列表元素的display值&#xff0c;实际效果比块元素多了列表的项目符…

洗地机性价比高的是哪款?高性价比洗地机排名

洗地机已成为当下备受欢迎的智能家电之一&#xff0c;但在挑选合适的洗地机时&#xff0c;面对各种新词汇和功能选择&#xff0c;可能会让人感到困惑。因此&#xff0c;为了帮助大家在购买洗地机时不踩坑&#xff0c;我们基于市面上主流品牌的综合分析对比&#xff0c;总结出来…

C++项目笔记--基于TensorRT搭建一个YoloV5服务器

目录 1--项目描述 2--项目地址 3--编译运行 4--测试结果 5--补充说明 1--项目描述 ① 基于 C/S 模型来构建 TCP 服务器和 TCP 客户端。 ② 使用 Epoll 来监控服务器和客户端之间的连接。 ③ 服务器和客户端约定使用相同的数据传输协议&#xff0c;头部分别使用 4 个字节来…

Windows下配置MySQL源码调试环境

Windows下配置MySQL源码调试环境 环境准备编译安装MySQL DeBug版MySQL初始化安装VS Code插件调试 参考链接&#xff1a; https://zhuanlan.zhihu.com/p/651665372 https://zhuanlan.zhihu.com/p/606732848 环境准备 # 创建存放源码的根目录 mkdir -p /root/code# 进入存放源码…

凹凸贴图和法线贴图的渲染效果对比

1、什么是凹凸贴图 凹凸贴图&#xff08;bump mapping&#xff09;是一种计算机图形学中的渲染技术&#xff0c;用于在给定的表面上模拟微小的凹凸纹理。通过在表面法线方向上微调每个像素的光照值&#xff0c;可以给平滑的表面增加视觉上的凹凸感。 在凹凸贴图中&#xff0c;每…

“押宝高手”乐视视频再出手,看中商业传奇剧《大盛魁》

作为最早开始版权采购的长视频平台&#xff0c;乐视视频一向擅长“押宝”优质内容。从《甄嬛传》到《白鹿原》等&#xff0c;乐视拿下了众多经典古装剧、年代剧的版权。 9月&#xff0c;乐视视频再次出手拿下的历史传奇剧《大盛魁》开始热播。该剧由王新民导演执导&#xff0c…

如何开始着手一篇Meta分析 | Meta分析的流程及方法

Meta分析是针对某一科研问题&#xff0c;根据明确的搜索策略、选择筛选文献标准、采用严格的评价方法&#xff0c;对来源不同的研究成果进行收集、合并及定量统计分析的方法&#xff0c;最早出现于“循证医学”&#xff0c;现已广泛应用于农林生态&#xff0c;资源环境等方面。…

CMake、QMake和编译器的关系

目前这是小编理解的关系&#xff0c;在window中使用到GCC编译器的变体之后&#xff0c;为了方便编译&#xff0c;qt就使用了qmake&#xff0c;而CMake相比qmake更加强大&#xff0c;目前小编在VS中用于生成vs项目工程。 小编理解应该不是很透彻&#xff0c;如果有人看出问题&am…

layui+java spring 实现图片文件新增到数据库

项目场景&#xff1a; layuijava spring 实现图片文件新增到数据库 解决方案&#xff1a; 1.首先layui是个不再更新的网址有想了解的可以浏览官网 表格组件 table - Layui 文档 2.官网内有专门的组件 代码直接粘过来即可 <!DOCTYPE html> <html> <head> …

【IDEA】idea恢复pom.xml文件显示灰色并带有删除线

通过idea打开spring boot项目后&#xff0c;发现每个服务中的pom.xml文件显示灰色并带有删除线&#xff0c;下面为解决方案 问题截图 解决方案 打开file——settings——build,execution,deployment——Ignored Files&#xff0c;把pom.xml前面的复选框去掉&#xff0c;去掉之…

Java反编译工具JD-GUI使用记录

1.下载JD-GUI https://www.onlinedown.net/soft/70298.htm​​​​​​https://www.onlinedown.net/soft/70298.htm 2.启动JD-GUI 进入JD-GUI目录下&#xff0c;dos窗口执行java -jar .\jd-gui.exe&#xff0c;就会弹出工具框&#xff0c;左上角打开项目jar包&#xff0c;即可…

关于汽车维修类中译英的英语翻译

随着全球汽车行业的不断发展&#xff0c;国际化程度的深化使得汽车产业的多语言交流需求日益旺盛&#xff0c;所以汽车翻译及本地化服务的重要性愈发凸显。那么&#xff0c;如何才能做好汽车翻译呢&#xff1f;汽车维修类英语翻译又有哪些要求呢&#xff1f; 我们知道 &#xf…

【机器学习 | 非线性拟合】梯度下降 vs SLSQP算法,谁更胜一筹? 解决六个数据点的非线性拟合难题,挑战非线性拟合问题

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

Selenium —— 网页frame与多窗口处理!

一、多窗口处理. 1.1、多窗口简介 点击某些链接&#xff0c;会重新打开⼀个窗⼜&#xff0c;对于这种情况&#xff0c;想在新页⾯上操作&#xff0c;就 得先切换窗⼜了。 获取窗⼜的唯⼀标识⽤句柄表⽰&#xff0c;所以只需要切换句柄&#xff0c;就可以在多个页⾯灵 活操作了…

react项目优化

随着项目体积增大&#xff0c;打包的文件体积会越来越大&#xff0c;需要优化&#xff0c;原因无非就是引入的第三方插件比较大导致&#xff0c;下面我们先介绍如何分析各个文件占用体积的大小。 1.webpack-bundle-analyzer插件 如果是webpack作为打包工具的项目可以使用&…

20个提升效率的JS简写技巧,告别屎山!

JavaScript 中有很多简写技巧&#xff0c;可以缩短代码长度、减少冗余&#xff0c;并且提高代码的可读性和可维护性。本文将介绍 20 个提升效率的 JS 简写技巧&#xff0c;助你告别屎山&#xff0c;轻松编写优雅的代码&#xff01; 移除数组假值 可以使用 filter() 结合 Bool…

东郊到家app小程序开发,上门按摩系统优势

东郊到家APP小程序开发 随着生活节奏的紧张&#xff0c;原本的逛菜市场&#xff0c;现在都是网上下单&#xff0c;现在互联网服务都已经融入到人们生活的各个方面 一、上门按摩预约系统的优势 1、高效 一键预约系统只需保存用户信息&#xff0c;以后只需一键预约即可完成。 2、…

分享一下怎么搭建公众号积分商城小程序

随着微信小程序的日益普及&#xff0c;越来越多的商家开始利用微信公众号和小程序进行营销推广。其中&#xff0c;搭建公众号积分商城小程序是一个非常受欢迎的选择。通过积分商城小程序&#xff0c;商家可以吸引更多的用户关注&#xff0c;提高品牌知名度&#xff0c;促进销售…

三门问题-Swift测试

三门问题&#xff08;Monty Hall problem&#xff09;亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论&#xff0c;大致出自美国的电视游戏节目Lets Make a Deal。问题名字来自该节目的主持人蒙提霍尔&#xff08;Monty Hall&#xff09;。 参赛者会看见三扇关闭了的门&#xf…

Camera Metadata跨进程传递

google camera2的参数设置都是通过CaptureRequest来设置的&#xff0c;相关的对象都实现了Parcelable接口才能进行跨进程传递。 一、整个Metadata的传递 1、CameraDeviceImpl.java 无论是capture还是repeating都会调用到下面的 submitRequestList 方法 mRemoteDevice就是Cam…