<!-- 配置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文件中读取配置操作,大家可以试试看!

最新文章

  1. Lite Your Android English
  2. mysq安装以及修改密码
  3. 批量处理_cmd_matlab
  4. Opencv + vs2012环境配置
  5. C#并发处理-锁OR线程安全?
  6. zabbix自定义监控tcp连接数
  7. DSP28377S - ADC学习编程笔记
  8. Web前端相关
  9. LeetCode14 Longest Common Prefix
  10. unity 3消 游戏
  11. could only be replicated to 0 nodes, instead of 1
  12. windows客户端连接到samba服务器(如何使用samba)
  13. centos 安装 redis3.2.0 集群
  14. echart+jquery+json统计TP数据
  15. Android: 工具使用备忘
  16. Oracle-11g 中使用表空间透明数据加密(TDE)
  17. OS + macOS Mojave 10.14.4 / sushi / ssh-keygen / ssh-copy-id
  18. POJ 3984 - 迷宫问题 - [BFS水题]
  19. iconfont作用在css伪类中的写法
  20. visual studio 2013怎样快速查看代码函数关系--代码图

热门文章

  1. hdp 2.06 安装备忘
  2. grafana使用小节
  3. mysql id_logfile 日志
  4. XSS攻击的防御
  5. JAVA数据结构--希尔排序
  6. Angular 2: 404 error occur when I refresh through the browser [duplicate]
  7. 网络寻路(思维+vector的应用)-----------蓝桥备战系列
  8. Linux 安装 python3
  9. bzoj4034 树上操作 树链剖分+线段树
  10. 安装Linux虚拟机到执行Java程序