配置信息加密
图
在Spring Boot应用程序中,有一些配置信息可能包含敏感数据,例如数据库密码、API密钥等,如果这些敏感数据被恶意攻击者获取,将会导致安全风险和数据泄漏问题,为了保护这些敏感配置信息的安全性,可以使用加密技术对其进行保护

jasypt

在Spring Boot中,可以使用jasypt(Java Simplified Encryption)库来对敏感配置信息进行加密,官方文档地址

依赖

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

中央仓库版本浏览

配置

方法一:在配置文件中配置加密密钥(不推荐)

jasypt:
  encryptor:
    password: your_password

加密密钥存放在配置文件中是不安全的,一旦配置文件泄露,所有加密的数据等同于没有加密

方式二:在项目启动时配置加密密钥(推荐)

java -jar demo.jar  -Djasypt.encryptor.password= your_password

方式三:IDEA开发指定

Edit Configurations ...中找到Modify options,勾选Environment variables环境变量,并加入对应的参数,如:

--jasypt.encryptor.password=1jHf8GnL4pKq7E90

如果使用Test,同理配置即可

加密

首先,对需要加密的信息进行加密,注意,一定要配置jasypt.encryptor.password,可以通过启动指定

import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import javax.annotation.Resource;

@SpringBootTest
public class JasyptTest {

    @Resource
    private StringEncryptor stringEncryptor;

    @Test
    void test() {
        System.out.println("加密结果:" + stringEncryptor.encrypt("192.168.0.201"));
    }

}

获取到加密后的url、password、username,在配置文件中进行配置,使用ENC()将加密后的字符串包裹

data:
  url: ENC(wRmYMwEop6JEbMr9zem6KWoVCnvjmOUWVnYbLnC8EXUzTbWzlIiQXlZRsHoRe2wdbqFW6qcJ6ruODSBchWvYK+wzqXPmJyjGUi8ggXKSSJiF3H1K9WtliPxf3ns6zj1yUToYSMZg4Hqf47iXMBGZmWySkPDPKhxM+MjCSxO4DhfKKPq7jHW6bIaqFm2VdoThF5nZXAT7FZZ5Egh+PGAxdnlFbeilCTHyzwEUsS80TS7j3wPFMjF/krataPPgp/KPSftXw6l0cJ2q8tnXkgKuYZ+Nmw8QbsuEApgYARooYic=)
  username: ENC(KFIkzv1QV0oaYMzgHjlefmzbonWZMVA9vzBEx6TnlHGAGO1AolOKQD/FrTegZoqf)
  password: ENC(t2L79RtORPH1UcE9R1g5OYLN9zDVvo9VLNPQmx5cD50AzDxNT2zIdGRGxhW8PgxL)