配置文件敏感信息加密方法

前言

在开发过程中,我们数据库的连接信息是很敏感的,直接以明文的方式写在配置文件中,存在很大的风险,数据库用户名及密码很容易泄露,所以推荐以密文的方式书写配置文件中的敏感信息。jasypt 是一个 java 实现的安全框架,国外大神 Ulises Bocchio 写了一个spring boot 下用的工具包,github 地址https://github.com/ulisesbocchio/jasypt-spring-boot,该工具包支持使用jasypt框架来处理properties和yml配置文件参数内容的加解密操作,该工具已经发布到了中央仓库供大家使用。

使用步骤

  • maven 依赖引入
jdk1.8 及以上 
<!--  https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter --> 
<dependency> 
     <groupId>com.github.ulisesbocchio</groupId> 
     <artifactId>jasypt-spring-boot-starter</artifactId> 
     <version>2.1.2</version> 
</dependency> 
 
jdk1.7 
<dependency> 
     <groupId>com.github.ulisesbocchio</groupId> 
     <artifactId>jasypt-spring-boot-starter</artifactId> 
     <version>1.5-java7</version> 
</dependency> 
 
jdk1.6 
<dependency> 
     <groupId>com.github.ulisesbocchio</groupId> 
     <artifactId>jasypt-spring-boot-starter</artifactId> 
     <version>1.5-java6</version> 
</dependency>
  • 使用jasypt-1.9.3.jar 工具包对明文进行加密,在jasypt-1.9.3.jar 所在位置打开cmd,执行命令:
  • java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=明文 password=ljm algorithm=PBEWithMD5AndDES

PS: jar包的位置在你的maven仓库中的org\jasypt\jasypt\1.9.3目录里
在这里插入图片描述

➢ Input:待加密的明文
➢ password:秘钥(可自定义)
➢ algorithm:加密算法
➢ OUTPUT:加密后的密文
默认情况下jasypt采用的算法是PBEWithMD5AndDES,该算法对同一串明文每次
加密的密文都不一样,比较适合做数据加解密。但是该算法必须配置秘钥,我们在yml文件配置如下参数
在这里插入图片描述
我们将需要加密的值配置为ENC(rmmk4ElS/DX0V+nS6TbF9w==),为什么需要这么配置呢,因为默认情况下jasypt-spring-boot 解析密码的规则是前缀是"ENC(",后缀是")"
在这里插入图片描述
这样就加密完成了,启动项目时,jasypt会自动拦截被ENC()标记的密文,自动解密为明文,但是将秘钥直接放到配置文件,还是存在风险的,当攻击者获取你的秘钥后,可以根据算法解密,这就达不到我们预期的目的了,所以,还需要改造!

  • 改造
    ➢ 我们可以把秘钥放到服务器的环境变量里,让yml文件通过读取服务器环境变量的方式获取秘钥,如图添加环境变量(以windows系统为例):
    在这里插入图片描述
    添加环境变量后,windows 需要重启,因为 springboot 读取机器环境变量是从缓存读取的,必须重启电脑刷新变量缓存。
    ➢ 修改yml文件
    在这里插入图片描述
    这样改造就完成了,既对连接信息进行了加密,又让攻击者不能从配置文件获取到秘钥,敏感信息的安全性大大提高!
  • 除了把密钥添加到环境变量的方法,还有一种方法,那就是启动springboot项目时,启动命令指定密钥
    java -jar xxx.jar --jasypt.encryptor.password=ljm
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值