SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案

这篇具有很好参考价值的文章主要介绍了SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案

问题

问题:

项目中含有配置文件,配置文件中含有数据库的用户名和密码,上传git直接对外网开放。那后果会怎样可想而知。

jasypt 加解密

jasypt(Java Simplified Encryption)是一个简化的开源 Java 加密工具库

Springboot引入jasypt

<!-- Java Simplified Encryption-->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>

加解密测试

@Test
public void test1(){
    // 参考 https://github.com/ulisesbocchio/jasypt-spring-boot
    PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
    SimpleStringPBEConfig config = new SimpleStringPBEConfig();
    // 加密密码
    config.setPassword("123456");
    // 默认值
    // 加密算法
    config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
    // 设置密钥获取迭代次数。在生成加密密钥时,会对密码进行多次迭代操作,以增加密钥的复杂度。
    config.setKeyObtentionIterations("1000");
    config.setPoolSize("1");
    config.setProviderName("SunJCE");
    config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
    config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
    config.setStringOutputType("base64");
    encryptor.setConfig(config);
    String encrypt = encryptor.encrypt("hello ...");
    System.out.println("加密后: " + encrypt);
    String decrypt = encryptor.decrypt(encrypt);
    System.out.println("解密后: " + decrypt);

}

输出

加密后: nOvch7+afYNA0xcbPQq1yzmK0yLj7GmCQR6YpVFH61IkMnTEULVgJz2b2yU3DKbs
解密后: hello ...

springboot使用jasypt

使用很简单,只需要引入jasypt-spring-boot-starter依赖,然后将配置文件中的明文换成"ENC(密文即可)“,例如密码为"hello …”,加密密码为"123456",加密之后的密码为"nOvch7+afYNA0xcbPQq1yzmK0yLj7GmCQR6YpVFH61IkMnTEULVgJz2b2yU3DKbs"

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/scott?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: ENC(nOvch7+afYNA0xcbPQq1yzmK0yLj7GmCQR6YpVFH61IkMnTEULVgJz2b2yU3DKbs)

项目启动时添加启动参数"-Djasypt.encryptor.password=123456"

SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案,spring boot,数据库,git

SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案,spring boot,数据库,git

原理简单解析

拿到配置信息>判断配置信息是否以"ENC(“开头并且以”)"结尾,如果是就拿到提取出密文>获取到加解密key>使用jasypt解密密文>将密文替换为明文

注意:在运行环境是可以拿到明文的,例如通过@Value(“${spring.datasource.password}”)拿到的依然是明文,但在源码级别是看不到明文的,而且加解密密码是通过环境变量提供的,所以即便别人看到密文也解不开,也访问不了我们的数据库.文章来源地址https://www.toymoban.com/news/detail-851380.html

到了这里,关于SpringBoot项目application配置文件数据库密码上传git暴露问题解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据库课程设计-学生选课管理系统(实训报告+答辩ppt+源码+sql文件+打包好的程序)springboot项目-javaweb

    作者:ChenZhen 博客地址:https://www.chenzhen.space/ 版权:本文为博主 ChenZhen 的原创文章,本文版权归作者所有,转载请附上原文出处链接及本声明。 如果对你有帮助,请给一个小小的star⭐ 源码加vx : ChenZhen_7 (实训报告+答辩ppt+源码+sql文件+打包好的程序 无套路 免费获取! 不放

    2024年02月11日
    浏览(66)
  • python Flask项目使用SQLalchemy连接数据库时,出现RuntimeError:Working outside of application context.的解决过程记录

    在使用python的Flask框架跟着教程编写项目时,我跟着教程使用了三个文件来组织,分别是main.py(主程序),module.py(数据库模型),controller.py(蓝图模块程序,用Blueprint衔接) 在主程序中,创建app、SQLalchemy实例对象db并将二者绑定 在module.py中,导入主程序中的db和app,创建

    2024年02月09日
    浏览(45)
  • SpringBoot项目连接数据库

    1、找到applications.yml,如下图  2、写入代码  

    2024年02月15日
    浏览(39)
  • SpringBoot如何配置数据库

    项目启动需要一个链接数据库,所以在此记录一下。 根据配置文件的后缀书写格式略有不同。 此处以MySQL为例,使用Maven为例 若是.yaml后缀的配置文件,那么端口书写为 解释: ①导入数据源和JDBC驱动 的依赖包 ②配置文件中配置数据库 ③开始使用

    2024年02月11日
    浏览(35)
  • springboot 配置不连接数据库启动

    启动项目的时候不需要配置连接数据库 已经连接数据库的项目临时不连接数据库启动     报如下错误:也就是说数据源的url没有配置。要么把报错数据源配上,要么排除掉数据源的加载。这里当然是后者了,把数据源加载排除。 mysql数据库驱动 druid数据库连接池 报错内容

    2024年02月11日
    浏览(52)
  • springboot 数据库连接池配置(hikari)

    JBDC         JABC是JAVA访问关系型数据库的标注API,它为各种关系型数据的访问提供统一的接口标准,然后,各个关系型数据库厂商按照JBDC的标准,提供能使JAVA访问的驱动包。一般情况下,在JAVA中执行一条SQL语句,需要以下几个步骤: 状态JDBC驱动程序 建立数据库连接 创建

    2024年02月09日
    浏览(47)
  • SpringBoot项目整合MybatisPlus并使用SQLite作为数据库

    SQLite 是一个进程内库,它实现了 独立的、无服务器的、零配置 的事务性 SQL 数据库引擎。SQLite 没有单独的服务器进程。 SQLite直接读取和写入普通磁盘文件,就是一个完整的 SQL 数据库 , 包含多个表、索引、 触发器和视图包含在单个磁盘文件中 。 数据库文件格式是跨平台

    2024年01月21日
    浏览(46)
  • Springboot项目连接neo4j数据库

    首先创建一个springboot项目,这里不再介绍。 连接 neo4j 数据库的依赖包 spring-boot-starter-data-neo4j依赖包 mybatis-plus依赖包

    2024年02月12日
    浏览(45)
  • 【精·超详细】SpringBoot 配置多个数据源(连接多个数据库)

    目录 1.项目路径 2.pom.xml  引入依赖: 3.application.yml配置文件: 4.两个entity类 5.Conroller 6.两个Service以及两个ServiceImpl  7.两个Mapper及两个Mapper.xml  8.运行Application  然后在浏览器请求 9.查看两个数据库是否有新增数据           总结: 1.pom.xml 引入依赖: dynamic-datasource-spring-b

    2024年02月12日
    浏览(65)
  • Springboot 实践(3)配置DataSource及创建数据库

            前文讲述了利用MyEclipse2019开发工具,创建maven工程、加载springboot、swagger-ui功能。本文讲述创建数据库,为项目配置数据源,实现数据的增删改查服务,并通过swagger-ui界面举例调试服务控制器 创建数据库 项目使用MySQL 8.0.31数据,数据库的库表结构的建立可行方式

    2024年02月12日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包