技术精华-项目配置文件敏感数据加密
介绍
在微服务中使用过SpringBoot配置文件的同学都知道,资源文件中的内容通常情况下是明文显示,安全性就比较低一些。打开application.properties或application.yml,比如mysql登陆密码,redis登陆密码以及第三方的密钥等等一览无余,这里时就需要一个加解密组件,提高一些属性配置的安全性。
jasypt
jasypt由于其使用的是PBEWithMD5AndDES加密方式,所以每次加密出来的结果都不一样,但是解密都是一样的,所以很适合对数据进行加密、将加密的结果替换配置文件中的敏感字段即可
使用方法
引入依赖
plain
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>配置加密盐值
yaml
jasypt:
encryptor:
# 此盐值自己可以设置
password: bgtjkjl!%^sdc
algorithm: PBEWithMD5AndDES这里我在配置中心中的common.yaml已进行了配置
对要进行加密的信息进行加密
java
@Component
public class TestJasypt {
@Autowired
private StringEncryptor encryptor;
@PostConstruct
public void test(){
//要加密的内容
String content = "";
String name = encryptor.encrypt(content);
System.out.println("密文: " + name);
System.out.println("明文" + encryptor.decrypt(name));
}
}数据库密码明文:root 密文:sRzxWFCAOeB1jP1wF+GcqCdyd2xiue1Credis密码明文:qaz123 密文:+XH73TopLBEg6H9u0f5FE9csF+oN15Gz
这里我对数据库密码/redis密码进行了加密并在对应服务中的配置中心做了配置
yaml
spring:
datasource:
username: root
password: ENC(sRzxWFCAOeB1jP1wF+GcqCdyd2xiue1C)yaml
spring:
main:
allow-bean-definition-overriding: true
redis:
database: 0
host: www.cookframe.com
port: 6379
password: ENC(+XH73TopLBEg6H9u0f5FE9csF+oN15Gz)注意
通常盐值是不会在配置中心对外暴露出去的,因为一旦拿到了盐值是可以反推出来明文的。所以通常盐值是在项目启动命令中进行设置的
shell
"--jasypt.encryptor.password=bgtjkjl!%^sdc","--jasypt.encryptor.algorithm=PBEWithMD5AndDES"更新: 2023-07-19 15:17:01
原文: https://www.yuque.com/u22210564/ykdrdh/df64vyz81unqz446