<!-- 配置dbcp数据源 -->
<bean id="remoteDS" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<!-- 使用的JDBC驱动的完整有效的java 类名 -->
<property name="driverClassName" value="${remote.jdbc.driver}" />
<!-- 传递给JDBC驱动的用于建立连接的URL -->
<property name="url" value="${remote.jdbc.url}" />
<!-- 数据库用户名 -->
<property name="username" value="${remote.jdbc.username}" />
<!-- 用户密码 -->
<property name="password" value="${remote.jdbc.password}" />
<!-- 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个. -->
<property name="testOnBorrow" value="${dbcp.testOnBorrow}" />
<!-- 指明是否在归还到池中前进行检验 -->
<property name="testOnReturn" value="${dbcp.testOnReturn}" />
<!-- 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. -->
<property name="testWhileIdle" value="${dbcp.testWhileIdle}" />
<!-- SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定,
则查询必须是一个SQL SELECT并且必须返回至少一行记录 -->
<property name="validationQuery" value="${dbcp.validationQuery}" />
<!-- 连接池创建的连接的默认的auto-commit状态 -->
<property name="defaultAutoCommit" value="${dbcp.defaultAutoCommit}" />
<!-- 最大空闲连接 -->
<property name="maxIdle" value="${dbcp.maxIdle}" />
<!-- 最大连接数量 -->
<property name="maxActive" value="${dbcp.maxActive}" />
<!-- 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${dbcp.minEvictableIdleTimeMillis}" />
<!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程 -->
<property name="timeBetweenEvictionRunsMillis" value="${dbcp.timeBetweenEvictionRunsMillis}" />
     <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${db.publicKey}"/>
</bean>

注:转自https://blog.csdn.net/aixiaoyang168/article/details/49930513

对于大部分程序员来说,数据库的信息,如用户名,密码等信息一般都写到配置文件中,便于修改和维护,然而这对于运维安全来说确实一个很大的挑战,如果黑客进入到你的系统里面去,那这些数据库用户名和密码就一目了然,这个是很不安全的。Druid为此提供一种数据库密码加密的手段ConfigFilter,使用他加密数据库密码,即使别人拿到了数据库连接密码,破解这个密码也得稍稍花点时间了,也对咱们的网站安全性提高了一些。

好了,废话少说,配置一下也是很简单的啦!

第一步: 
执行druid的命令加密数据库密码 
命令: 
java -cp druid-0.2.23.jar com.alibaba.druid.filter.config.ConfigTools xxxxxx

举个栗子:

命令:
D:\>java -cp druid-1.0..jar com.alibaba.druid.filter.config.ConfigTools
输出:
Biyu5YzU+6sxDRbmWEa3B2uUcImzDo0BuXjTlL505+/pTb+/0Oqd3ou1R6J8+9Fy3CYrM18nBDqf6wAaPgUGOg==

输出的结果就是加密后的密码啦!xxxxxx为你的数据库密码明文。

第二步: 
配置数据源,使用Druid配置数据源对数据库密码进行解密。

 <!-- 配置dbcp数据源 -->
<bean id="remoteDS" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<!-- 使用的JDBC驱动的完整有效的java 类名 -->
<property name="driverClassName" value="${remote.jdbc.driver}" />
<!-- 传递给JDBC驱动的用于建立连接的URL -->
<property name="url" value="${remote.jdbc.url}" />
<!-- 数据库用户名 -->
<property name="username" value="${remote.jdbc.username}" />
<!-- 用户密码 -->
<property name="password" value="${remote.jdbc.password}" />
<!-- 指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个. -->
<property name="testOnBorrow" value="${dbcp.testOnBorrow}" />
<!-- 指明是否在归还到池中前进行检验 -->
<property name="testOnReturn" value="${dbcp.testOnReturn}" />
<!-- 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除. -->
<property name="testWhileIdle" value="${dbcp.testWhileIdle}" />
<!-- SQL查询,用来验证从连接池取出的连接,在将连接返回给调用者之前.如果指定, 则查询必须是一个SQL SELECT并且必须返回至少一行记录 -->
<property name="validationQuery" value="${dbcp.validationQuery}" />
<!-- 连接池创建的连接的默认的auto-commit状态 -->
<property name="defaultAutoCommit" value="${dbcp.defaultAutoCommit}" />
<!-- 最大空闲连接 -->
<property name="maxIdle" value="${dbcp.maxIdle}" />
<!-- 最大连接数量 -->
<property name="maxActive" value="${dbcp.maxActive}" />
<!-- 连接在池中保持空闲而不被空闲连接回收器线程(如果有)回收的最小时间值,单位毫秒 -->
<property name="minEvictableIdleTimeMillis" value="${dbcp.minEvictableIdleTimeMillis}" />
<!-- 在空闲连接回收器线程运行期间休眠的时间值,以毫秒为单位. 如果设置为非正数,则不运行空闲连接回收器线程 -->
<property name="timeBetweenEvictionRunsMillis" value="${dbcp.timeBetweenEvictionRunsMillis}" />
     <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${db.publicKey}"/>
</bean>

说明:name=”connectionProperties” value=”config.decrypt=true”,这个就是配置druid进行数据库密码解密。

经过简单的配置,这样配置文件里面的密码加密之后,有可以连接到数据库啦!

当然,使用ConfigFilter解密密码,有三种方式配置: 
1) 可以在配置文件my.properties中指定config.decrypt=true 
2) 也可以在DruidDataSource的ConnectionProperties中指定config.decrypt=true 
3) 也可以在jvm启动参数中指定-Ddruid.config.decrypt=true

ConfigFilter不仅仅可以进行数据库加密,还可以支持配置文件从本地文件系统中读取,从远程http文件中读取配置操作,大家可以试试看!

使用durid的ConfigFilter对数据库密码加密的更多相关文章

  1. SSM项目的数据库密码加密方案

    项目主要采用:SpringMVC4.3.2.RELEASE +Spring4.3.2.RELEASE + Maven 3.3.3 + druid 1.0.29 + Mybatis 3.2.8 + My ...

  2. glassfish配置中数据库密码加密方法

    glassfish配置中数据库密码加密方法 Glassfish中的数据库连接池需要使用密文保存数据库密码.如果不是,则可按如下方法可配置 通过Glassfish中的Alias实现,配置方法如下: 1. ...

  3. springboot对数据库密码加密

    第一步:maven引jar包 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifa ...

  4. 【SpringBoot】SpringBoot集成jasypt数据库密码加密

    一.为什么要使用jasypt库? 目前springboot单体应用项目中,甚至没有使用外部配置中心的多服务的微服务架构的项目,开发/测试/生产环境中的密码往往是明文配置在yml或properties文 ...

  5. Spring-Boot数据库密码加密配置

    springboot集成mysql/oracle时需要在yml/properties中配置数据库信息,用户名密码是肯定有的,所以就涉及到密码的加密,当然不加密也是可以的,正如某位大佬所说的,不加密就像 ...

  6. Druid对数据库密码加密的坑

    背景: 在对已有项目搭建本地环境,修改了本地ip端口和数据库帐号密码(使用了明文). 然后项目一直跑不起来,还抛出各种异常,经过分析发现主要错在这里:druid java.lang.IllegalAr ...

  7. 阿里druid数据源配置及数据库密码加密

    注意: 1.阿里默认只对用户密码解密 2.druid 1.0.16版本及以上的解密时需要同时配置publicKey 一.生成密文密码 1 前提:已经配置了jdk环境 1.生成密文密码需要准备druid ...

  8. 在OpenErp的配置文件中为数据库密码加密

      openerp连接数据库的用户名和密码可以命令行给出, 也可以设置在配置文件中, 如下例所示: db_user = openerp db_password = laoliu 因为它使用了明文的密码 ...

  9. druid数据库密码加密程序编写

    第一步:引入 druid-1.0.1.jar 架包 第二步: 编写程序 package nihao; import com.alibaba.druid.filter.config.ConfigTool ...

随机推荐

  1. luoguP4868 Preprefix sum

    https://www.luogu.org/problemnew/show/P4868 线段树上加等差数列,基础区间修改单点查询 等差数列具有可加性,当在同一段区间内时,首项相加公差相加即可 #inc ...

  2. 开启和查看mysql的bin-log日志

    [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_centos data]# vim /etc/my.cnf [root@VM_0_7_c ...

  3. JVM高级特性与实践(一):Java内存区域 与 内存溢出异常

    套用<围城>中的一句话,“墙外面的人想进去,墙里面的人想出来”,用此来形容Java与C++之间这堵内存动态分配和垃圾收集技术所围成的“围墙”就再合适不过了. 对于从事C.C++的开发人员而 ...

  4. COCO2018 全景分割

    全景分割是18年新推出的一个任务,它要求同时分割出目标和背景,也就是既有实例分割也有语义分割,用官方的话讲是朝着真实世界视觉系统的重要一步 如图所示,里面既有对天空,草地等stuff的分割,也有对目标 ...

  5. 冰之随笔一(c#反射、特性)

    接触反射是从写三层开始的 反射关键字: Assembly 程序集对象 其静态方法LoadForm(path)可以根据路径获取程序集,并且Assembly是一个抽象类,不能new,也不能继承 程序集对象 ...

  6. JAVA数据结构--选择排序

    选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然 ...

  7. vue控制父子组件渲染顺序

    在父组件中,如下图渲染子组件,那如何在父组件中加入一些数据获取逻辑且能控制子组件渲染呢. 就是像在上图中红框圈起来的那样,挂个 ok(其他你自己定义的也可以) 参数,同时在父组件的任何生命周期中去改变 ...

  8. 【研究】struts2-045漏洞

    攻击者可以通过构造HTTP请求头中的Content-Type值可能造成远程代码执行. 工具: K8(链接:https://pan.baidu.com/s/1kVxgFNx 密码:ygxf) Tomca ...

  9. VS2015打开特定项目就崩溃

    今天在打开之前写的项目的时候,一开vs就崩溃关闭了,打开其他项目的.sln和.vsproj就可以,唯独有1个项目打不开,也不知道为啥,气死了. 去网上找到的解决办法: 步骤1:开始–>所有程序– ...

  10. zookeeper+dubbo简单部署方案

    1.zookeeper服务 首先,我们需要下载:zookeeper-3.4.9 解压后,在conf文件夹中添加一个配置文件zoo.cfg,内容如下: tickTime=2000 dataDir=/Us ...