在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用、随机数的应用、命令行参数的使用、多环境的配置管理等等。 为什么要加
在之前的系列教程中,我们已经介绍了非常多关于Spring Boot配置文件中的各种细节用法,比如:参数间的引用、随机数的应用、命令行参数的使用、多环境的配置管理等等。 为什么要加密? 可能很多初学者,对于配置信息的加密并不敏感,因为开始主要接触本地的开发,对于很多安全问题并没有太多的考虑。而现实中,我们的配置文件中,其实包含着大量与安全相关的敏感信息,比如:数据库的账号密码、一些服务的密钥等。这些信息一旦泄露,对于企业的重要数据资产,那是相当危险的。 所以,对于这些配置文件中存在的敏感信息进行加密,是每个成熟开发团队都一定会去的事。 第一步:创建一个基础的Spring Boot项目 第二步:设计一个参数和单元测试,用来输出这个配置信息
datasource.password=didispace.com 用来输出配置信息的单元测试: @Slf4j 执行这个单元测试,会输出:
这里还没开始加密,下面我们开始引入加密的操作! 第三步:在pom.xml中引入jasypt提供的Spring Boot Starter <dependency> 在插件配置中加入: <plugin> 第四步:在配置文件中加入加密需要使用的密码
同时,修改要加密的内容,用DEC()将待加密内容包裹起来,比如:
第五步:使用jasypt-maven-plugin插件来给DEC()包裹的内容实现批量加密。 在终端中执行下面的命令:
注意:这里-Djasypt.encryptor.password参数必须与配置文件中的一致,不然后面会解密失败。 执行之后,重新查看配置文件,可以看到,自动变成了
其中,ENC()跟DEC()一样都是jasypt提供的标识,分别用来标识括号内的是加密后的内容和待加密的内容。 如果当前配置文件已经都是ENC()内容了,那么我们可以通过下面的命令来解密配置文件,查看原始信息:
该操作不会修改配置文件,只会在控制台输出解密结果,比如:
第六步:此时,我们的配置文件中的敏感信息已经被ENC()修饰了,再执行一下单元测试,不出意外的话,依然可以得到之前一样的结果:
而此时,配置文件中已经是加密内容了,敏感信息得到了保护。 |
2021-06-05
2021-05-27
2021-05-26
2021-06-05
2021-05-16