网站首页 > 博客文章 正文
在开发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上进行查找相关使用方法。
猜你喜欢
- 2024-11-13 spring boot配置文件敏感字段加密
- 2024-11-13 Spring Boot数据库密码加密的配置方法
- 2024-11-13 Spring Boot安全之application配置信息加密
- 2024-11-13 如何在SpringBoot项目中实现加密?
- 2024-11-13 SpringBoot进阶-SpringBoot如何实现配置文件脱敏?
- 2024-11-13 加密SpringBoot配置文件技巧(加密pdf文件如何解密编辑)
- 2024-11-13 Spring Boot版本和Jasypt版本的兼容性问题?
- 2024-11-13 SpringBoot加密配置属性(springboot配置密码加密)
- 2024-11-13 SpringCloud-OAuth2(二):实战篇(oauth2.0 springcloud)
- 2024-11-13 SpringBoot 配置文件这样加密,才足够安全!
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)