加密项目的数据库、Redis等密码

2022-08-24 10:45:03 浏览数 (1)

 有一个有意思的事情,github搜索jdbc: mysql:// 你会发现新大陆,出现一堆可以窥探项目的个人配置,绝大多数的项目都没有做任何的加密处理(虽然也没啥人看)。这些信息万一被利用了怎么办?下面开始解决这个问题。

 首先建立或者打开一个Springboot工程。

Maven加密依赖

 在项目的pom.xml中添加如下代码(jasypt加密组件):

代码语言:javascript复制
<dependency> 
 <groupId>com.github.ulisesbocchio</groupId> 
 <artifactId>jasypt-spring-boot-starter</artifactId> 
 <version>3.0.2</version> 
</dependency> 

配置加密密钥

 在项目的application.properties中添加下面的代码,这里的’wwang’可以自己定义,相当于jasypt的钥匙用于自动解密。开发环境下可以直接写在配置文件中,提交的远程仓库或者服务器的时候建议去掉这行代码,后面继续来说。

代码语言:javascript复制
jasypt.encryptor.password=wwang 

加密工具类

 PropertiesUtil用于读取当前项目的application.properties配置参数。

生成密文

 在启动类中加密获取密文,启动项目的时候在控制台就可以看见。

配置加密项

运行Springboot项目,成功运行后在控制台打印出加密后的密文,之后将密文复制到对应的密码项位置,并用 ENC( ) 包裹,比如原文是:

代码语言:javascript复制
spring.datasource.password=123456 
spring.datasource.druid.stat-view-servlet.login-password= 123456 

修改成

代码语言:javascript复制
spring.datasource.password=ENC(N78m7XBHh/GzGBJ0vhUp54EolIT3iYJwne3eznvCWWIZpI eC4R1gY9YE8N0 dm1) 
spring.datasource.druid.stat-view-servlet.login-password=  
ENC(0qQbthNMbRceyR/amVHNtgacJOUihk3fOxJqysAnSxCir2zYq0ZAgj/2VFTOIp7C) 

这样基本上就配置完毕了,但是配置文件中有jasypt的密钥,这里更为安全的做法就是在开发的时候配置文件正常使用,部署到服务器或者提交到远程仓库的时候,去掉这一行代码:

代码语言:javascript复制
jasypt.encryptor.password=wwang 

部署项目的时候,Springboot目前常用jar包的形式运行,在java -jar之后,加上这行配置,如下:

代码语言:javascript复制
java -jar XXX.jar --jasypt.encryptor.password=wwang 

或者可以直接作为应用的环境变量

代码语言:javascript复制
java -Djasypt.encryptor.password=wwang -jar  XXX.jar 

到此项目的数据项的加密工作就完成了,记录下来,方便以后复用。

学习参考于:CodeSheep的的原创分享https://mp.weixin.qq.com/s/CTDEFxTKdk0qxK9VNSEIqw

0 人点赞