敏感信息在 Spring Boot 配置文件里藏不住?这套加密方法帮你 "捂严实"

举报
HELLO程序员 发表于 2025/12/16 10:42:25 2025/12/16
【摘要】 面试时被追问:“Spring Boot 配置文件里的数据库密码、Redis 密钥这些敏感信息,怎么防止被无权人员看到?”这不仅是面试官的高频考点,更是实际开发中绕不开的安全红线。在开发 Spring Boot 项目时,你是否曾在配置文件里明晃晃地写着数据库密码、API 密钥这些敏感信息?推到代码仓库时心惊胆战,生怕被人看到;部署到服务器后更是如鲠在喉,总担心哪天被恶意爬取——毕竟,明文暴露敏...

面试时被追问:“Spring Boot 配置文件里的数据库密码、Redis 密钥这些敏感信息,怎么防止被无权人员看到?”

这不仅是面试官的高频考点,更是实际开发中绕不开的安全红线。

在开发 Spring Boot 项目时,你是否曾在配置文件里明晃晃地写着数据库密码、API 密钥这些敏感信息?推到代码仓库时心惊胆战,生怕被人看到;部署到服务器后更是如鲠在喉,总担心哪天被恶意爬取——毕竟,明文暴露敏感信息堪称系统安全的“定时炸弹”。

别慌!今天就手把手带你用 jasypt-spring-boot-starter 给配置文件“上锁”。这个 Spring Boot 官方都推荐的加密神器,能让你用最少的代码、最简单的步骤,把明文密码变成加密密文,启动时自动解密还不影响业务逻辑。哪怕是加密新手,跟着这篇教程走,10 分钟就能给敏感信息穿上“防弹衣”,彻底告别配置文件“裸奔”的风险。

01

环境搭建

首先引入maven依赖

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

然后就需要将这样的配置进行加密

image.png

02

生成加密后的密文

需要将配置文件中的明文(如数据库密码)加密为密文,有 3 种方式生成:

方式 1:用 Jasypt 提供的工具类

在项目中写一个测试方法,调用 Jasypt 的加密工具:

import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
public class JasyptTest {
    @Autowired
    private StringEncryptor encryptor; // Spring 会自动注入加密器
    @Test
    public void testEncrypt() {
        String plaintext = "root123"; // 要加密的明文(如数据库密码)
        String ciphertext = encryptor.encrypt(plaintext);
        System.out.println("加密后:" + ciphertext); // 输出密文,复制备用
    }
    @Test
    public void testDecrypt() {
        String ciphertext = "刚才生成的密文"; // 测试解密是否正确
        String plaintext = encryptor.decrypt(ciphertext);
        System.out.println("解密后:" + plaintext); // 应输出原明文
    }
}

注意:运行测试时,需确保已通过启动参数或环境变量配置了 jasypt.encryptor.password,否则会报错。

方式 2:用 Jasypt 命令行工具

  1. 下载 Jasypt 工具包:下载 jasypt-1.9.3-dist.zip(版本需与依赖兼容)。
  2. 解压后进入 bin 目录,执行加密命令:
# Linux/Mac
./encrypt.sh input="root123" password="你的密钥" algorithm=PBEWithMD5AndDES
# Windows
encrypt.bat input="root123" password="你的密钥" algorithm=PBEWithMD5AndDES
  • input:要加密的明文
  • password:加密密钥(与项目中配置的一致)
  • algorithm:加密算法(默认与 starter 兼容,可不填)
  1. 输出结果中 OUTPUT 即为密文。

方式 3:Maven 插件(可选)

在 pom.xml 中添加插件,通过 Maven 命令生成:

 <build>
        <plugins>
            <plugin>
                <groupId>com.github.ulisesbocchio</groupId>
                <artifactId>jasypt-maven-plugin</artifactId>
                <version>3.0.5</version>
            </plugin>
        </plugins>
    </build>

执行命令

mvn jasypt:encrypt-value -Djasypt.encryptor.password=你的密钥 -Djasypt.plugin.value=root123

或者在idea中可以直接配置

image.png

配置加密的密钥的要加密的明文

image.png

ENC(密文)

image.png

最终将配置文件中所有的配置进行加密
image.png
测试一下!

毫无疑问肯定就报错了,因为你需要在启动的参数中配置解密的参数

image.png

在idea中配置启动的参数

image.png

这样配置完再启动就完全没问题了!!

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。