SpringBoot如何解决yml明文密码问题

博客主页: 南来_北往

🔥系列专栏:Spring Boot实战


前言

在现代的软件开发中,安全性是一个重要的考量因素。对于使用SpringBoot框架开发的应用程序而言,敏感信息如数据库密码、API密钥等通常存储在YAML配置文件中,而这些文件往往是明文存储,存在安全隐患。为了解决这一问题,可以采用Jasypt(Java Simplified Encryption)库对敏感信息进行加密处理,以提升应用的安全性。具体分析如下:

  1. 添加依赖

    • 引入Jasypt库:需要在项目的pom.xml文件中添加Jasypt的Spring Boot Starter依赖。这样做可以使项目支持Jasypt提供的加密功能。确保所添加的依赖版本与所使用的Spring Boot版本兼容。
  2. 配置Jasypt属性

    • 设置加密解密密钥:在application.yml或application.properties文件中配置用于加密解密的密钥以及其他相关设置。这个密钥是加密和解密过程的关键,需要保证其安全性,避免外泄。
  3. 加密敏感信息

    • 利用Jasypt工具加密:可以使用Jasypt提供的命令行工具或API对敏感信息进行加密操作。通过命令行工具,可以将明文密码转换为密文,并输出供下一步使用。
    • 加密后的配置方式:将加密后的密文放入YAML配置文件中,使用ENC()标注包裹起来。这样修改后的配置信息会在应用启动时自动解密,加解密过程对应用开发者透明。
  4. 启用自动解密

    • SpringBoot自动处理:在Spring Boot应用启动过程中,Jasypt会自动识别并处理那些被ENC()包裹的值,实现自动解密。因此,对于已被加密的敏感信息,直接在服务中按照原本的逻辑使用即可。

此外,在了解以上内容后,以下还有一些其他注意事项:

  • 密钥管理:加密密钥必须妥善保管,避免在版本控制系统中公开,或者通过不安全的途径传递。
  • 定期更新密钥:为增强安全性,应定期更换加密密钥,并及时更新配置文件中的密文。
  • 性能考虑:加密解密操作可能会对应用启动速度有所影响,特别是在加密数据较大时,对此需做适当评估。

总的来说,通过上述步骤,SpringBoot应用开发者可以有效地保护敏感信息,如数据库密码等,防止它们以明文形式出现在配置文件中,从而满足企业的安全合规要求。在整个过程中,Jasypt提供了一个简便且安全的方案来应对这一挑战。最后,切记保障加密密钥的安全,这是整个加密措施有效性的关键。

实现

1、添加依赖

XML 复制代码
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.2</version>
</dependency>

2、然后打开jasypt的jar包目录,执行如下命令生成密文。

XML 复制代码
java -cp  jasypt-1.9.3.jar  org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="root" password=mysalt-xy algorithm=PBEWithMD5AndDES

3、执行结果

input 是要加密的明文

password 是相当于盐

因此密码需要在执行一次 input="密码"

生成后替换,格式ENC(密文)

然后添加盐配置:

XML 复制代码
jasypt:
  encryptor:
    password: mysalt-xy

这样就可以轻松加密了。

相关推荐
周末也要写八哥几秒前
Java面试时,线程为什么不安全?
java·开发语言·面试
Rust研习社4 分钟前
Rust Clone 特征保姆级解读:显式复制到底怎么用?
开发语言·后端·rust
Albert Edison5 分钟前
【RabbitMQ】七种工作模式
java·开发语言·分布式·rabbitmq
有味道的男人6 分钟前
抖音关键词搜索,视频详情api
linux·数据库·音视频
丁丁点灯o6 分钟前
Oracle中金额数字转换为大写汉字
数据库·oracle
fly spider7 分钟前
MySQL之Buffer Pool
数据库·mysql
小旭95279 分钟前
SpringBoot 项目实战:ECharts 数据可视化 + POI Excel 报表导出完整版教程
java·spring boot·后端·信息可视化·echarts
程序员老邢10 分钟前
【技术底稿 13】内网 Milvus 2.3.0 向量数据库全流程部署(商助慧 AI 底座,Attu 可视化)
java·数据库·人工智能·ai·语言模型·milvus
凯尔萨厮12 分钟前
Spring学习笔记(基于注解)
笔记·学习·spring
YXWik613 分钟前
Langchain4j(5)RAG之多格式文档加载(PDF / Word / TXT / 批量文件夹)
java