SpringBoot配置文件数据库密码加密
在我们日常开发中,我们可能很随意把数据库密码直接明文暴露在配置文件中,在开发环境可以这么做,但是在生产环境,是相当不建议这么做,毕竟安全无小事,谁也不知道哪天密码就莫名其妙泄露了。今天就来聊聊在springboot项目中如何对数据库密码进行加密。
·
前言
在我们日常开发中,我们可能很随意把数据库密码直接明文暴露在配置文件中,在开发环境可以这么做,但是在生产环境,是相当不建议这么做,毕竟安全无小事,谁也不知道哪天密码就莫名其妙泄露了。今天就来聊聊在springboot项目中如何对数据库密码进行加密
实践
引入maven依赖
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
在Springboot配置文件中配置秘钥
jasypt:
encryptor:
password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
测试的时候可以这样写 秘钥放在配置文件是不太安全的
在IDE工具中我们可以将秘钥放在启动参数中
jasypt.encryptor.password=EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
生产环境启动项目时添加参数即可
java -jar -Djasypt.encryptor.password=EbfYkitulv73I2p0mXI50JMXoaxZTKJ7 xxx.jar
生成密文
建一个测试类来生成密码加密后的密文
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestDemo {
@Autowired
StringEncryptor stringEncryptor;//密码解码器自动注入
@Test
public void test() {
String name = encryptor.encrypt("root");
String password = encryptor.encrypt("123!@#");
System.out.println(name);//n3UKAujtutC8u9qJaSm1uA==
System.out.println(password );//bfc7g2lOcAP79kVGo9MmGA==
}
}
也可以在本地通过Java命令生成 input 为要加密的内容 password为秘钥
java -cp E:\repository\org\jasypt\jasypt\2.1.0\jasypt-2.1.0.jar
org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI
input="root"
password=EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
在配置文件使用
将配置文件中的明文密码改为加密后的密码 ,外面包一个ENC()
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/user?serverTimezone=UTC
username: ENC(n3UKAujtutC8u9qJaSm1uA==)
password: ENC(bfc7g2lOcAP79kVGo9MmGA==)
更多推荐
已为社区贡献1条内容
所有评论(0)