Java经典教程:数据库密码配置项都不加密?心也太大了吧!

本文探讨了Java项目中配置文件的安全性,强调了数据库密码等敏感信息不应明文存储。通过引入jasypt-spring-boot组件,演示了如何加密配置项,包括设置加密密钥、自定义前后缀以及增强加密安全性。建议将加密密钥通过命令行参数、环境变量或系统环境变量来保护,以防止信息泄露。
摘要由CSDN通过智能技术生成

先看一份典型的配置文件

... 省略 ...

## 配置MySQL数据库连接
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://121.196.xxx.xxx:3306/user?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456

## 配置Redis缓存连接
redis.host=121.196.xxx.xxx
redis.port=6379
redis.password=111111

## 配置SMS短信服务连接
ali.sms.access_key_id=2zHmLdxAes7Bbe2w  
ali.sms.access_key_secret=bImWdv6iy0him8ly

... 省略 ...

这是节选自某个典型的Spring Boot项目的application.properties配置文件。

嘘… 偷偷告诉我,是不是很多小伙伴也都是这么写的?

这乍一看没啥问题,很多人会觉得理所当然。包括我自己也看到过很多的项目(包括很多开源项目)是这么写的。

但仔细一琢磨,发现:

Java经典教程:数据库密码配置项都不加密?心也太大了吧!

 

是的! 很多项目的配置文件里,包括数据库密码、缓存密码、亦或是一些第三方服务的Key都是直接配在里面,没有做任何加密处理!

有人会说这个配置文件反正是我自己的,有啥风险?

这个嘛,之前倒是看到过一个例子,一个程序员把自己公司的项目代码上传到了自己的GitHub仓库里了,结果配置文件忘了处理,导致公司数据库泄露,关键问题是,这个公司还是个酒店管理公司,因此后果可想而知了…

Java经典教程:数据库密码配置项都不加密?心也太大了吧!

 

换个角度想,假如当时那个项目的配置文件里,所有重要信息都经过了加密,那这一幕大概率就不会发生了。所以,即使是项目的配置文件,重要的信息也得加密!


哪些信息要加密呢?

一般来说,项目配置文件里,所有涉及信息安全的配置项(或字段)都应该做处理,典型的比如:

  • 用到的数据库、缓存的密码
  • 用到的中间件、消息队列的密码
  • 用到的各种第三方服务的Access_Key
  • 其他第三方服务的通信信息
  • …等等

总而言之,关键字段都应该保护起来,最起码不能用明文直接写在配置文件里!


如何加密配置项呢?

方法非常简单,几个步骤即可完成,先来演示一个最简版本:

1、首先建立一个基础的Spring Boot工程

这就不再赘述了

2、引入jasypt-spring-boot加密组件

通过jasypt-spring-boot这个开箱即用的加密组件来引入Jasypt这个强大的加密库

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-s
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值