java使用密文链接数据库_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。
java使用密文链接数据库_Java基础——数据库连接信息使用密文相关推荐
- java获取达梦数据库_Java连接达梦数据库驱动dm_jdbc
[实例简介] Java连接达梦数据库驱动dm_jdbc: dm_jdbc\com.dameng.floader.jar dm_jdbc\com.dameng.impexp.jar dm_jdbc\Dm ...
- java实现 mysql导入数据库_Java实现MySQL数据库导入
距离上班另一段时间.如今总结一下怎样使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次运行以下Java代码: import java.io.File; import ja ...
- 用java创建一个学生数据库_java项目源码-数据库创建学生信息管理系统
java项目源码-数据库创建学生信息管理系统 create data base JavaTest go use JavaTest go create table 登陆 (用户名 char(20) pr ...
- java实现链接数据库_Java 链接数据库
Java 连接 MySQL 需要驱动包 jdbc驱动包下载:https://pan.baidu.com/s/1VpjyXqPMABZxZx_yIsvUbA 密码: 1v9b [第一步] ...
- java jdbc连接db2数据库_Java连接db2数据库(常用数据库连接五)
1.安装好db2数据库,并建立表如下: 2.eclipse或myeclipse中建立工程并导入java连接db2所需要的jar包db2java.jar 下载地址:http://download.csd ...
- java制作图形界面数据库_java图形界面以及链接数据库
import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; public class No ...
- Java设计模式应用到数据库_Java设计模式在数据库编程中的应用研究
Java的广泛使用使得数据编程变得更加简单方便.本当中.当在加载父类的时候,再调用不同的子类,以避免代码文对Java进行了深入的探讨,提供了一种可行的应用Java的重复编写.templatemetho ...
- java不死神兔总数_Java基础知识强化之IO流笔记13:递归之不死神兔问题(斐波那契数列)...
1.这个问题是如下的: 有一对兔子,从出生后第3个月起,每个月都生一对兔子,小兔子长到第3个月又生一对兔子,加入兔子都不死,问第20个月兔子的对数? 分析:我们找规律 兔子对数 第1个月: 1 第 ...
- java保存时间到数据库_java new date 保存到数据库时间不对
Ibatis框架之系统架构 如果用最简洁的话来总结 iBATIS 主要完成那些功能时,我想下面几个代码足够概括. 1 Class.forName("oracle.jdbc.driver.Or ...
- Java 项目JDBC 链接数据库中会出现的错误
1.出现的地方 1 package com.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.DriverManager; 5 impor ...
最新文章
- cmake java_JNI系列之AS支持CMake了
- amazon mws api 获取所有产品_Amazon’s Choice是什么?Amazon's Choice标签全解读
- java中四种线程池及poolSize、corePoolSize、maximumPoolSize
- 15大统计数据描绘网络安全行业市场蓝图
- 4.2 js没有块级作用域
- 大数据可视化dataease(有所帮助)
- CCF201712-3 Crontab(100分)【模拟+文本处理】
- 24.两两交换链表中的节点
- ylbtech-LanguageSamples-Indexers(索引器)
- 「leetcode」617. 合并二叉树:【三种递归】【一种迭代】详解
- matlab 矩阵线性规划,matlab线性规划-线性规划,matlab
- 一些有趣、奇葩、实用的网站
- 性能与实用兼具 Parallels Desktop 13 for Mac全球首发
- STM32入门100步
- Payment支付平台API接口文档
- mysql 5.7.20免安装_Windows下MySQL 5.7.20 免安装版配置
- 实现网站在线客服系统代码过程中解决问题-js实现点击复制文本
- 正则表达式的例题分析
- oracle加字段卡住,oracle添加字段引起的问题
- 王者荣耀s16服务器维护,王者荣耀:S16单排环境依旧差劲 五大原因戳到很多人的痛点...
热门文章
- Keras的两种模型:序列模型(Sequential)和通用模型(Model)
- R语言 面板数据分析 plm包实现(二)——随机效应模型
- 我想吃掉你的胰脏--影片--观后感
- python3 +ip2region 离线IP库地址文件实现毫秒级查询ip地址信息
- 免费的HTTP代理IP服务器地址
- 花巨款跟巴菲特吃饭的人,是亏是赚?
- ios 判断打开相机权限_ios 判断是否有权限访问相机,相册,定位
- win10如何显示和隐藏文件夹
- 【STM32F407的DSP教程】第17章 DSP功能函数-定点数互转
- C/C++实现的游戏角色名称名字随机生成代码