专业的编程技术博客社区

网站首页 > 博客文章 正文

SpringBoot如何使用jasypt给application.yml文件敏感信息加密?

baijin 2024-11-13 09:31:45 博客文章 3 ℃ 0 评论

在开发Spring Boot项目的时候,在application.yml的配置文件中或多或少都会包含一些敏感信息,例如数据库的密码、还有一些链接配置的密钥、配置appid、appkey等信息。那么一旦我们的应用被攻击了,攻击者很容易就从中能够获取到相关的信息。那么我们如何对这些配置信息进行加密呢?

Jasypt工具

jasypt工具是我们常用用来对Spring Boot工程配置文件加密的工具。其使用如下,在POM文件中引入如下的依赖

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

这里我们使用的是Spring Boot 3.0以上的版本,所以引入的也是3.0.5的版本。

如何配置

在添加完依赖之后,就需要对jasypt进行配置,在配置文件中可以添加如下的配置,注意,这里添加的配置文件还是在Spring Boot 默认的 yml的配置文件中。

jasypt:  
  encryptor:  
    password: sdjsdbshdbfuasd  
    property:  
      prefix: ENC(
      suffix: )

这里需要注意的是,password表示用来加密的密钥,这也是必须要填的配置项,这个值可以随便输入乱码,增加安全性,另外对于prefix前缀配置,以及suffix后缀配置,可以填也可以不填,不填的默认值就是ENC(和)。

如何加密

配置完上面的信息之后,jasypt提供了一个用于加密的工具类StringEncryptor,使用这个接口来完成加密操作。

public interface StringEncryptor {  
  
    /**  
    * 加密方法  
    */  
    public String encrypt(String message);  


    /**  
    * 解密方法   
    */  
    public String decrypt(String encryptedMessage);  
  
}

可以编写一个Controller方法,也可以在Test测试工具类中编写如下的代码,分别对所需要的用户名和密码进行加密操作。

@SpringBootTest  
class JasryptApplicationTests {  
  
    @Autowired  
    private StringEncryptor stringEncryptor;  

    @Test  
    void contextLoads() {  
        String username = stringEncryptor.encrypt("root");  
        String password = stringEncryptor.encrypt("123456");  
       	System.out.println(username)
      	System.out.println(password)
    }  
  
}

如何使用?

在完成加密操作之后,我们可以将配置文件中的数据库连接的账号和密码改成如下的配置。

spring:
  datasource:
    url: jdbc:postgresql://192.168.1.10:5555/test
    username: ENC(ahahahahhajdfadjklajldskja;flkjlksjda;flk)
    password: ENC(ahsahfhdjheqjfhjkasdhflakjsdhlfjas)
    driver-class-name: org.postgresql.Driver

这个时候,我们的数据库参数,就变成了加密传输的,当然这里需要之前我们用于配置的加密密钥,也就是上面的jasypt.encryptor.password的值,但是这个值,我们不能直接写到配置文件中,因为如果这个值暴露了,数据库加密操作相当于没有做。

所以一般情况下,当我们将应用打包之后,都是通过如下的方式来启动。

java -jar jasrypt-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=加密密码

这个时候,启动之后,我们的应用就可以正常的访问数据库了,当然其他的配置项也是一样的。

总结

当然jasypt工具还有其他的一些高级用法,有兴趣的读者可以在评论区讨论,或者可以到其GitHub上进行查找相关使用方法。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表