springboot对敏感信息进行加密
当我们完善的项目发布后,因为我们springboot中的配置信息如yml中的一些敏感信息都是明文的,当黑客入侵到我们的后台时,我们的这些敏感信息就暴露在黑客的眼前。这样是及其不安全的。
spring:
datasource:
username: root
password: abc
url: jdbc:mysql://localhost:3306/o2o
driver-class-name: com.mysql.jdbc.Driver
我们需要对敏感信息进行加密 然后解密的过程;如username为root
和password为abc等信息加密,加密后的信息如下:
spring:
datasource:
username: ENC(rdI5eO7uJHr4PsS/9HjQiA==)
password: ENC(uCb1Ul0H+qimYzw/GXT8nQ==)
url: ENC(OWCbBZ8bzUBR05PHzSLI2On+VZOtQ04zwQ8ztKIFZ7W3ZMEtdJGzeg==)
driver-class-name: com.mysql.jdbc.Driver
这样就算被入侵了,他们看到这些信息也会很懵逼了。
下面为具体步骤
1.首先我们需要在pom.xml中引进一个进行加密和解密的jar组合包
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
2.然后修改springboot中的yml配置信息 将加密解密的类进行初始化,springboot是根据约定来配置的。在application.yml或者properties中加入此段配置,以password代码方式进行加密解密
jasypt:
encryptor:
password: EbfYkitulv73I2p0mXI50JMXoaxZTKJ7
3.获取到加密后的敏感信息,当这些信息都配置好了 我们就可以正常的加载出我们的加密解密对象了,我们需要在测试方法中获取到加密后的敏感信息,最后在配置文件中进行解密,即完成操作。
@SpringBootTest
class O2oApplicationTests {
//自动加载加密类
@Autowired
StringEncryptor encryptor;
@Test
public void getEncryptor() {
//对敏感信息进行加密
String url = encryptor.encrypt("jdbc:mysql://localhost:3306/o2o");
String name = encryptor.encrypt("root");
String password = encryptor.encrypt("abc");
System.out.println(url+"----------------");
System.out.println(name+"----------------");
System.out.println(password+"----------------");
}
}
sout
83rR+PZUVpWPTQNJEI2VgJzCYh3yu91DZMnwBg0yEcKRIDfnlUqclA==----------------
yuMySYsYNA7nV2IoV/uVKw==----------------
QI4iTbdHcbidPuPQ7nUxcA==----------------
4.将加密信息放入配置文件中,通过ENC(加密信息)的方式,在springboot项目加载的时候就会将加密信息进行解密,就获得了我们之前的username和password了。
spring:
datasource:
username: ENC(rdI5eO7uJHr4PsS/9HjQiA==)
password: ENC(uCb1Ul0H+qimYzw/GXT8nQ==)
url: ENC(OWCbBZ8bzUBR05PHzSLI2On+VZOtQ04zwQ8ztKIFZ7W3ZMEtdJGzeg==)
driver-class-name: com.mysql.jdbc.Driver