关于SpringBoot项目yml配置数据库、redis、mq等中间件的用户密码敏感信息加密问题的解决方案

发布于:2024-09-17 ⋅ 阅读:(81) ⋅ 点赞:(0)

一、问题描述

一般情况下,yml里边的配置信息 都是在项目部署时动态管理的,一般不存在泄密或者不安全的情况,但是,不凡有一些脑袋有泡的客户,要对你项目源码进行安全性检测。故提供如下解决方案:

二、关于中间件Redis、MQ等对用户名或密码进行加密。

一般可在其对应的配置类中进行加解密,实施方法如下:在yml配置加密后的字符串,在bean初始化配置类里读取密码时,对密文进行解密赋值。
代码片段如下:
在这里插入图片描述
针对此类中间件,加密思路如上,当然也有别的方式,这里只更改客户端,比较笨,勿怪。

三、关于数据库用户名密码的数据加密

网上的方案大致分两种:

3.1利用jasypt进行加解密:

大致就是引入其jasypt-spring-boot-starter对应版本的依赖,yml配置加项目启动指定密钥。
本人亲测:大多使用的主流版本2.1.2 和 3.0.3 对SpringBoot 2.x的支持都不怎么好,虽然网上说 2.2.x以下用2.1.2比较好 但是本人也试了,会报错。报jasypt.encryptor.password

3.2利用自定义的数据库DataSourceConfig进行数据库配置加解密。

这里我附一下配置类,自行尝试

package com.thunderhealth.config;

import com.baomidou.dynamic.datasource.DynamicRoutingDataSource;
import com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationAdvisor;
import com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationInterceptor;
import com.baomidou.dynamic.datasource.aop.DynamicLocalTransactionAdvisor;
import com.baomidou.dynamic.datasource.processor.DsHeaderProcessor;
import com.baomidou.dynamic.datasource.processor.DsProcessor;
import com.baomidou.dynamic.datasource.processor.DsSessionProcessor;
import com.baomidou.dynamic.datasource.processor.DsSpelExpressionProcessor;
import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
import com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceCreatorAutoConfiguration;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceHealthCheckConfiguration;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.druid.DruidDynamicDataSourceConfiguration;
import com.sun.org.apache.xml.internal.security.utils.Base64;
import <

网站公告

今日签到

点亮在社区的每一天
去签到