前言
在日前安全形势越来越严重的情况下,让我意识到在项目中存在一个我们经常忽略的漏洞,那就是我们的项目的配置文件中配置信息的安全,尤其是数据库连接的用户名和密码的安全。所以这里我们就需要对数据库的用户名和密码进行加密,这也是本文的由来。本文采用Jasypt对Spring Boot配置文件加密的相关方法,其实呢,也还有其他方案,具体的会在后面的相关文章中说明。
引入jasypt
1 | <dependency> |
1.生成要加密的字符串
1.1 将数据库的用户名和密码进行加密
1 |
|
输出信息
1 | username:NZmLHOOHX0SEjc285iG9YQ== |
1.2. 或者使用Maven下载好的jar包加密\Maven\org\jasypt\jasypt\2.0.0\jasypt-2.0.0.jar
1 | java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI password=1Qaz0oKm algorithm=PBEWithMD5AndDES input=root |
输出信息
1 | ----ENVIRONMENT----------------- |
拷贝-OUTPUT-下的结果即可
2.配置properties文件
将生成的加密串配置ENC(加密串)到application.properties中
1 | server: |
加密方式对应的类为BasicTextEncryptor和StrongTextEncryptor
1 | private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); |
1 | private final StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor(); |
3.部署时配置salt(盐)值
1. 为了防止salt(盐)泄露,反解出密码.可以在项目部署的时候使用命令传入salt(盐)值
1 | java -jar -Djasypt.encryptor.password=1Qaz0oKm xxx.jar |
2. 或者在服务器的环境变量里配置,进一步提高安全性
1 | 打开/etc/profile文件 |
下面是一个我自己的具体实现:https://github.com/eelve/jasypt,使用Jasypt对数据库用信息加密后,可以成功连接上数据库
官方地址:https://github.com/ulisesbocchio/jasypt-spring-boot