Spring Boot配置内容加密实现敏感信息保护

 更新时间:2021年11月25日 17:21:11   作者:厦门在乎科技  
之前我们讲过的配置相关知识都是Spring Boot原生就提供的,而今天我们将介绍的功能并非Spring Boot原生就支持,但却非常有用:配置内容的加密

在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用、随机数的应用、命令行参数的使用、多环境的配置管理等等。

为什么要加密?

可能很多初学者,对于配置信息的加密并不敏感,因为开始主要接触本地的开发,对于很多安全问题并没有太多的考虑。而现实中,我们的配置文件中,其实包含着大量与安全相关的敏感信息,比如:数据库的账号密码、一些服务的密钥等。这些信息一旦泄露,对于企业的重要数据资产,那是相当危险的。 所以,对于这些配置文件中存在的敏感信息进行加密,是每个成熟开发团队都一定会去的事。

第一步:创建一个基础的Spring Boot项目

第二步:设计一个参数和单元测试,用来输出这个配置信息

准备加密的配置:

datasource.password=didispace.com

用来输出配置信息的单元测试:

@Slf4j
@SpringBootTest
public class PropertiesTest {
 
    @Value("${datasource.password:}")
    private String password; 
    @Test
    public void test() {
        log.info("datasource.password : {}", password);
    }
 
}

执行这个单元测试,会输出:

2021-08-13 22:28:45.506  INFO 70405 --- [           main] com.didispace.chapter15.PropertiesTest   : datasource.password : didispace.com

这里还没开始加密,下面我们开始引入加密的操作!

第三步:在pom.xml中引入jasypt提供的Spring Boot Starter

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.3</version>
</dependency>

在插件配置中加入:

<plugin>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-maven-plugin</artifactId>
    <version>3.0.3</version>
</plugin>

第四步:在配置文件中加入加密需要使用的密码

jasypt.encryptor.password=didispace

同时,修改要加密的内容,用DEC()将待加密内容包裹起来,比如:

datasource.password=DEC(didispace.com)

第五步:使用jasypt-maven-plugin插件来给DEC()包裹的内容实现批量加密。

在终端中执行下面的命令:

mvn jasypt:encrypt -Djasypt.encryptor.password=didispace

注意:这里-Djasypt.encryptor.password参数必须与配置文件中的一致,不然后面会解密失败。

执行之后,重新查看配置文件,可以看到,自动变成了

datasource.password=

ENC(/AL9nJENCYCh9Pfzdf2xLPsqOZ6HwNgQ3AnMybFAMeOM5GphZlOK6PxzozwtCm+Q)

jasypt.encryptor.password=didispace

其中,ENC()DEC()一样都是jasypt提供的标识,分别用来标识括号内的是加密后的内容和待加密的内容。

如果当前配置文件已经都是ENC()内容了,那么我们可以通过下面的命令来解密配置文件,查看原始信息:

mvn jasypt:decrypt -Djasypt.encryptor.password=didispace

该操作不会修改配置文件,只会在控制台输出解密结果,比如:

datasource.password=DEC(didispace.com)

jasypt.encryptor.password=didispace

第六步:此时,我们的配置文件中的敏感信息已经被ENC()修饰了,再执行一下单元测试,不出意外的话,依然可以得到之前一样的结果:

2021-08-13 22:50:00.463  INFO 76150 --- [           main] com.didispace.chapter15.PropertiesTest   : datasource.password : didispace.com

而此时,配置文件中已经是加密内容了,敏感信息得到了保护。

以上就是Spring Boot配置内容加密实现敏感信息保护的详细内容,更多关于Spring Boot配置内容加密保护敏感信息的资料请关注脚本之家其它相关文章!

相关文章

  • Mybatis pagehelper分页插件使用过程解析

    Mybatis pagehelper分页插件使用过程解析

    这篇文章主要介绍了mybatis pagehelper分页插件使用过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • windows7配置java环境变量的图文教程

    windows7配置java环境变量的图文教程

    这篇文章主要介绍了windows7配置java环境变量的教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • JSONObject与JSONArray的使用

    JSONObject与JSONArray的使用

    这篇文章主要介绍了JSONObject与JSONArray的使用 的相关资料,需要的朋友可以参考下
    2016-06-06
  • Java 自定义错误类示例代码

    Java 自定义错误类示例代码

    以下是对Java中自定义错误类的示例代码进行了介绍。需要的朋友可以过来参考下
    2013-08-08
  • Java 中的 Unsafe 魔法类的作用大全

    Java 中的 Unsafe 魔法类的作用大全

    Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,关于Java 中的 Unsafe 魔法类,到底有啥用处,你都了解吗,下面通过本文给大家普及一下
    2021-06-06
  • linux部署出现java文件操作报错:java.io.FileNotFoundException解决办法

    linux部署出现java文件操作报错:java.io.FileNotFoundException解决办法

    这篇文章主要g介绍了linux部署出现java文件操作报错:java.io.FileNotFoundException解决的相关资料,这个错误通常表示你的Spring Boot应用程序无法找到指定的文本文件,需要的朋友可以参考下
    2023-12-12
  • Java Mybatis的初始化之Mapper.xml映射文件的详解

    Java Mybatis的初始化之Mapper.xml映射文件的详解

    这篇文章主要介绍了Java Mybatis的初始化之Mapper.xml映射文件的详解,解析完全局配置文件后接下来就是解析Mapper文件了,它是通过XMLMapperBuilder来进行解析的
    2022-08-08
  • springboot源码中this::selfInitialize怪异用法的含义解析

    springboot源码中this::selfInitialize怪异用法的含义解析

    这篇文章主要介绍了springboot源码中this::selfInitialize怪异用法的含义解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 详解在Java的Struts2框架中配置Action的方法

    详解在Java的Struts2框架中配置Action的方法

    这篇文章主要介绍了详解在Java的Struts2框架中配置Action的方法,讲解了包括struts.xml中的action配置及基于注解方式Action配置的两个方式,需要的朋友可以参考下
    2016-03-03
  • Ubuntu安装jdk8常用方法流程解析

    Ubuntu安装jdk8常用方法流程解析

    这篇文章主要介绍了Ubuntu安装jdk8常用方法流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论