springboot开发---用密文方式登录连接数据库

在使用springboot开发web程序的过程中,会涉及到使用数据库,一般我们会将连接数据库的用户名和密码直接写在配置文件application.properties里。

spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root

这样填写无疑是让数据库裸奔,任何看过这个配置文件的人都可以获得用户名和密码,然后可以使用数据连接工具连接数据库,从而窃取数据库里的数据,或者直接删库跑路。

因此在配置文件中,我们不能直接填写用户名和密码,而是应该先对用户名和密码进行加密处理后再填写。
首先在java.security包中随便选择一种加密算法,对数据库的用户名和密码加密
然后将密文填写到配置文件中:(这里采用简单的BASE64编码)

spring.datasource.driver-class-name=com.mysql.jdbc.Driver #数据库驱动
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username= cm9vdA==
spring.datasource.password= cm9vdA==

现在关键的来了,如果直接运行程序,将会报数据库连接错误,这是因为用户名和密码都是密文,数据库无法识别。因此我们需要在应用程序连接数据库之前对密文进行解密。
springboot读取配置文件中数据的流程如下图:
配置文件加载流程

根据配置文件的读取流程,我们可以想到两种方案;
第一种方法:
首先根据上面的流程配置文件中的用户名和密码会被读到一个bean里面,然后bean会被存放在一级缓存中,因此我们可以在存放前拦截到记录数据库连接信息的bean,然后找到用户名和密码。并解密后重新赋值。
,在我使用的com.alibaba.druid.pool.DruidDataSource的数据池中,信息就是被读取到DruidDataSource的bean里,
DruidDataSource

接下来需要实现BeanPostProcessor接口对bean进行拦截,并解密用户名和密码。
在这里插入图片描述
第二总种方法是直接使用配置类将application.properties中的用户名和密码读取出来解密后重新配置。这里略过。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值