有一个有意思的事情,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