Java基础——数据库连接信息使用密文

背景

数据库连接配置文件一般都是使用明文,这会带来数据库泄露的安全问题。例如jdbc.properties配置文件中,数据库连接地址、用户名、密码都是明文,如何使配置文件中的数据库连接信息避免明文显示是本文重点内容,即如何使配置信息使用密文就可以达到跟明文一样的效果。

分析

假如数据库连接密码使用了密文。

  • 修改连接池源码

顾名思义,修改dbcp、c3p0、Druid连接池的源码,先对加密的密码解密,然后再创建连接。改完源码后重新打包发布。不建议采用修改源码的方式。

  • 拦截数据库连接属性信息

不修改源码,又想使用密文密码连接,有没有这么好的事呢?答案是有的。利用spring的加载顺序,在加载dbcp、c3p0、Druid连接池之前拦截数据库连接对象,对密码密文解密后,注入到数据库连接对象的password属性中,这样在创建连接池的时候,用的密码就是明文密码了。

相关技术

数据库连接池:Druid、dbcp、c3p0等

JDBC

AES加解密算法

Spring

实操

假如数据库连接密码使用了密文。

针对拦截数据库对象属性信息这一实现方法做实际操作与测试。

Druid

Jdbc.properties

上图中的连接密码已进行了AES加密。

spring.xml

上图表示将id="dbPwdProperties"的bean的属性赋给Druid数据源连接对象bean。

org.jeecgframework.core.util.DbPwdEncryptBean这一实体bean用来解密密文,解密后的密文重新赋给”password”这一属性。如下图:

AES加解密算法本文不在赘述。

经实操测试后,项目可正常启用。暂未发现不靠谱现象。

C3P0

与druid实操基本相同,只是部分差异,如下:

上图中除了class需要改成”com.mchange.v2.c3p0.ComboPooledDataSource”c3p0连接池对象外(改成c3p0连接池配置),上图红框中也应改成properties,因为c3p0连接池底层源码设置属性的的属性名使用的”properties”,如下图:

而Druid连接池底层源码设置属性的的属性名使用的”connectProperties”,如下图:

DBCP

除了class改成”org.apache.commons.dbcp.BasicDataSource”dbcp连接池对象外(改成DBCP连接池配置),其它同Druid。

热门文章

暂无图片
编程学习 ·

【数据结构】-排序-快速排序

~快速排序在平均情况下是效果最好的排序算法~每趟子表的排序都是从两头向中间交替逼近,接下来举一个例子类别排序方法最好时间最坏时间平均时间空间复杂度稳定性序列特征适用于插入排序直接插入排序n(顺序)n2(逆序)n21稳定有序序列+待排序元素+无序序列基本有序/n很小折半插…
暂无图片
编程学习 ·

Java使用poi将office文件转为html

一、前言 功能需求:上传office文档,并提供文件在线预览。 解决方案:使用Aspose.cells.jar包,将文档转换为pdf格式; 使用libreOffice,将文档转换为pdf格式; 使用poi将文档转换为html格式。方案一:通过Aspose的方式,该功能是付费版,需要破解,所以是能抛弃。 方案二,使…
暂无图片
编程学习 ·

Easyui网上书城需求分析

Easyui网上书城分析背景/价值模块划分前台后台前台用户模块前台分类模块前台书籍模块前台购物车模块前台订单模块后台书籍模块后台权限模块后台订单模块数据库设计 背景/价值 对老板而言:方便管理,有助于书城的推广 对顾客而言:方便购买、查阅书籍 对图书的销售和采购提供了…
暂无图片
编程学习 ·

TabRow + TextView导致文字显示不完全

我们在使用表格布局TabLayout时会出一个现象:TextView显示文字时当超过屏幕换行是最后一个文字显示不完全,这个时候我们可以将Textview改成如下布局即可将android:layout_width="wrap_content"改为android:layout_width="0dp" 同时添加该属性android:lay…
暂无图片
编程学习 ·

第三章 第一个Java程序 世界你好

学习了前面的两章内容,我相信小伙伴们对于Java有了一定的认识。那么怎么写一个基本的Java程序呢?接下来,我们就通过一个最基本的最简单的程序来看看。在书写代码之前呢?我先介绍几款编译器,也就是常用的代码书写工具。可能有的小伙伴会说,一开始学习不是应该用记事本,然…
暂无图片
中恒嘉业 ·

关于主从复制的超详细解析(全)

目录前言1. 主从复制1.1 方式2. Mysql的主从复制2.1 一主一从2.1.1 window和linux通讯2.1.2 linux和linux的通讯2.2 双主双从3. Redis的主从复制3.1 哨兵模式3.2 java代码结合前言 主要介绍mysql的主从复制以及redis的主从复制 能由浅入深的明白原理以及如何操作 再者&#xf…
暂无图片
郑州普通话 ·

Android面试心得必备技能储备详解,直接上干货

组件化 1.1 组件化初衷APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,维护成本高。 业务耦合度高,代码越来越臃肿,团队内部多人协作开发困难。 Android项目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一处代码后都要重新编译打包测…
暂无图片
郑州普通话 ·

Android 数据存储(二)-SharedPreferences or MMKV

一、SharedPreferences 不同于文件的存储方式,如果要保存的键值集合相对较小,则应使用SharedReferences API。SharedReferences对象指向一个包含键值对的文件,并提供简单的读写方法。 本文从SharedReferences开始逐步引入Preference、MMKV。 …
暂无图片
代理记账 ·

在web应用中发送和接收Jakarta消息

Running the websimplemessage Example To Package and Deploy websimplemessage Using Maven _1、Make sure that GlassFish Server has been started (see Starting and Stopping GlassFish Server). _2、In a terminal window, go to: tut-install/examples/jms/websimp…
暂无图片
cgfy ·

C++学习日记2——函数、封装、对象特性

一、函数 1.1 函数默认参数 1.1.1 简介 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的 1.1.2 语法 返回值类型 函数名 (参数 默认值) {} 1.1.3 代码 #include <iostream> using namespace std;// 函数的默认参数 int func(int a, int b 20, int c 30…
暂无图片
coreui ·

视频水印怎么去除?超简单 千万不要错过

小编在知乎看到很多大佬分享的视频去水印的方法&#xff0c;但是感觉都有点太复杂了&#xff0c;今天就来分享一下小编自己私藏的几个针对于视频去水印的软件和网站~建议大家收藏哦~ 1、爱给网-视频去水印小工具&#xff08;免费 在线&#xff09; 推荐点 1、在线操作&#…
暂无图片
coreui ·

Mac 安装 tomcat10

Mac 安装 tomcat10 1、下载tomcat tomcat官网&#xff1a;https://tomcat.apache.org/ 点击我下载的tomcat10&#xff1a; 2、下载解压,给bin下的*.sh文件添加可执行权限 3、修改webapps下的ROOT中的index文件查看效果
暂无图片
未来博客 ·

视频水印怎么去除?超简单 千万不要错过

小编在知乎看到很多大佬分享的视频去水印的方法&#xff0c;但是感觉都有点太复杂了&#xff0c;今天就来分享一下小编自己私藏的几个针对于视频去水印的软件和网站~建议大家收藏哦~ 1、爱给网-视频去水印小工具&#xff08;免费 在线&#xff09; 推荐点 1、在线操作&#…
暂无图片
未来博客 ·

Mac 安装 tomcat10

Mac 安装 tomcat10 1、下载tomcat tomcat官网&#xff1a;https://tomcat.apache.org/ 点击我下载的tomcat10&#xff1a; 2、下载解压,给bin下的*.sh文件添加可执行权限 3、修改webapps下的ROOT中的index文件查看效果
暂无图片
建站日记 ·

惠州实验室建设选址、勘察事项

惠州实验室建设选址、勘察事项&#xff0c;SICOLAB技术员带您从实验室建设启动前思考问题考虑如下&#xff1a;一、不同实验室建设选址要求 1.化学实验室 &#xff08;1&#xff09;清洁安静环境 &#xff08;2&#xff09;远离住宅、生活区 &#xff08;3&#xff09;锅炉房与…
暂无图片
建站日记 ·

NLP聊天机器人原理(seq2seq模型)

一、seq2seq模型 1.概念 seq2seq是一个Encoder-Decoder结构的网络&#xff0c;它的输入是一个序列&#xff0c;输出也是一个序列。Encoder中将一个可变长度的信号序列变为固定长度的向量表达&#xff0c;Decoder将这个固定长度的向量变成可变长度的目标的信号序列。这个结构最…
暂无图片
mfbz ·

惠州实验室建设选址、勘察事项

惠州实验室建设选址、勘察事项&#xff0c;SICOLAB技术员带您从实验室建设启动前思考问题考虑如下&#xff1a;一、不同实验室建设选址要求 1.化学实验室 &#xff08;1&#xff09;清洁安静环境 &#xff08;2&#xff09;远离住宅、生活区 &#xff08;3&#xff09;锅炉房与…
暂无图片
mfbz ·

全渠道会员通-天猫会员通3: 会员运营内容准备

在天猫会员通技术对接开发过程中&#xff0c;为了通知存量会员的通知工作&#xff0c;发挥会员通的优势&#xff0c;品牌需要做好以下事宜&#xff1a; 会员体系暂停公告&#xff1a;因会员通技术升级期间&#xff0c;会员服务将被暂停&#xff0c;店铺tab中会员入口将被下线&…
暂无图片
珊珊日记 ·

C# 执行Javascript脚本

c#教程https://www.xin3721.com/eschool/CSharpxin3721/ 前一阵子使用C#编写SCXML状态机&#xff0c;需要解析EMCScript表达式&#xff0c;使用了Jint库&#xff08;https://github.com/sebastienros/jint/)&#xff0c;当时感觉与C#之间的数据转换不是很方便。这两天有时间又关…
暂无图片
珊珊日记 ·

第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛

A.大学期末现状 题目描述 作为一名大学生的你&#xff0c;现在又到了期末查成绩的时候&#xff0c;当你的成绩大于等于60时请输出“jige,haoye!”,否则输出"laoshi,caicai,laolao"。 输入描述: 一行&#xff0c;一个整数x代表你的成绩&#xff08;0<x<100&a…