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

一、问题描述

一般情况下,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 <
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Spring Boot配置Redis需要在`application.yml`文件中指定Redis的连接信息。以下是一个示例: ``` spring: redis: host: localhost port: 6379 password: password # 如果Redis设置了密码,需要提供密码 ``` 如果你的Redis实例没有设置密码,则可以省略`password`属性。 在代码中使用Redis需要使用`Lettuce`或`Jedis`等Redis客户端库。以下是使用`Lettuce`连接Redis的示例: ``` @Configuration public class RedisConfig { @Value("${spring.redis.host}") private String redisHost; @Value("${spring.redis.port}") private int redisPort; @Value("${spring.redis.password}") private String redisPassword; @Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(); config.setHostName(redisHost); config.setPort(redisPort); config.setPassword(RedisPassword.of(redisPassword)); return new LettuceConnectionFactory(config); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory()); return template; } } ``` 在上面的示例中,`redisConnectionFactory`方法创建了一个`LettuceConnectionFactory`对象,并将其配置为使用`application.yml`文件中指定的Redis连接信息。`redisTemplate`方法创建了一个`RedisTemplate`对象,并将其配置为使用`redisConnectionFactory`方法创建的连接工厂。然后你就可以在代码中使用`RedisTemplate`对象进行Redis操作了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

慕木兮人可

感谢支持,勿忘初心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值