1 <!-- 配置dbcp数据源 --> 2 <bean id="remoteDS" class="org.apache.commons.dbcp.BasicDataSource" 3 destroy-method="close"> 4 <!-- 使用的JDBC驱动的完整有效的java 类名 --> 5 <property name="driverClassName" value="${remote.jdbc.driver}" /> 6 <!-- 传递给JDBC驱动的用于创建链接的URL --> 7 <property name="url" value="${remote.jdbc.url}" /> 8 <!-- 数据库用户名 --> 9 <property name="username" value="${remote.jdbc.username}" /> 10 <!-- 用户密码 --> 11 <property name="password" value="${remote.jdbc.password}" /> 12 <!-- 指明是否在从池中取出链接前进行检验,若是检验失败,则从池中去除链接并尝试取出另外一个. --> 13 <property name="testOnBorrow" value="${dbcp.testOnBorrow}" /> 14 <!-- 指明是否在归还到池中前进行检验 --> 15 <property name="testOnReturn" value="${dbcp.testOnReturn}" /> 16 <!-- 指明链接是否被空闲链接回收器(若是有)进行检验.若是检测失败,则链接将被从池中去除. --> 17 <property name="testWhileIdle" value="${dbcp.testWhileIdle}" /> 18 <!-- SQL查询,用来验证从链接池取出的链接,在将链接返回给调用者以前.若是指定, 19 则查询必须是一个SQL SELECT而且必须返回至少一行记录 --> 20 <property name="validationQuery" value="${dbcp.validationQuery}" /> 21 <!-- 链接池建立的链接的默认的auto-commit状态 --> 22 <property name="defaultAutoCommit" value="${dbcp.defaultAutoCommit}" /> 23 <!-- 最大空闲链接 --> 24 <property name="maxIdle" value="${dbcp.maxIdle}" /> 25 <!-- 最大链接数量 --> 26 <property name="maxActive" value="${dbcp.maxActive}" /> 27 <!-- 链接在池中保持空闲而不被空闲链接回收器线程(若是有)回收的最小时间值,单位毫秒 --> 28 <property name="minEvictableIdleTimeMillis" value="${dbcp.minEvictableIdleTimeMillis}" /> 29 <!-- 在空闲链接回收器线程运行期间休眠的时间值,以毫秒为单位. 若是设置为非正数,则不运行空闲链接回收器线程 --> 30 <property name="timeBetweenEvictionRunsMillis" value="${dbcp.timeBetweenEvictionRunsMillis}" /> 31 <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${db.publicKey}"/> 32 </bean>
注:转自https://blog.csdn.net/aixiaoyang168/article/details/49930513java
对于大部分程序员来讲,数据库的信息,如用户名,密码等信息通常都写到配置文件中,便于修改和维护,然而这对于运维安全来讲确实一个很大的挑战,若是黑客进入到你的系统里面去,那这些数据库用户名和密码就一目了然,这个是很不安全的。Druid为此提供一种数据库密码加密的手段ConfigFilter,使用他加密数据库密码,即便别人拿到了数据库链接密码,破解这个密码也得稍稍花点时间了,也对我们的网站安全性提升了一些。程序员
好了,废话少说,配置一下也是很简单的啦!数据库
第一步:
执行druid的命令加密数据库密码
命令:
java -cp druid-0.2.23.jar com.alibaba.druid.filter.config.ConfigTools xxxxxxapache
举个栗子:安全
命令: D:\>java -cp druid-1.0.15.jar com.alibaba.druid.filter.config.ConfigTools 123456 输出: Biyu5YzU+6sxDRbmWEa3B2uUcImzDo0BuXjTlL505+/pTb+/0Oqd3ou1R6J8+9Fy3CYrM18nBDqf6wAaPgUGOg==
输出的结果就是加密后的密码啦!xxxxxx为你的数据库密码明文。运维
第二步:
配置数据源,使用Druid配置数据源对数据库密码进行解密。jvm
1 <!-- 配置dbcp数据源 --> 2 <bean id="remoteDS" class="org.apache.commons.dbcp.BasicDataSource" 3 destroy-method="close"> 4 <!-- 使用的JDBC驱动的完整有效的java 类名 --> 5 <property name="driverClassName" value="${remote.jdbc.driver}" /> 6 <!-- 传递给JDBC驱动的用于创建链接的URL --> 7 <property name="url" value="${remote.jdbc.url}" /> 8 <!-- 数据库用户名 --> 9 <property name="username" value="${remote.jdbc.username}" /> 10 <!-- 用户密码 --> 11 <property name="password" value="${remote.jdbc.password}" /> 12 <!-- 指明是否在从池中取出链接前进行检验,若是检验失败,则从池中去除链接并尝试取出另外一个. --> 13 <property name="testOnBorrow" value="${dbcp.testOnBorrow}" /> 14 <!-- 指明是否在归还到池中前进行检验 --> 15 <property name="testOnReturn" value="${dbcp.testOnReturn}" /> 16 <!-- 指明链接是否被空闲链接回收器(若是有)进行检验.若是检测失败,则链接将被从池中去除. --> 17 <property name="testWhileIdle" value="${dbcp.testWhileIdle}" /> 18 <!-- SQL查询,用来验证从链接池取出的链接,在将链接返回给调用者以前.若是指定, 则查询必须是一个SQL SELECT而且必须返回至少一行记录 --> 20 <property name="validationQuery" value="${dbcp.validationQuery}" /> 21 <!-- 链接池建立的链接的默认的auto-commit状态 --> 22 <property name="defaultAutoCommit" value="${dbcp.defaultAutoCommit}" /> 23 <!-- 最大空闲链接 --> 24 <property name="maxIdle" value="${dbcp.maxIdle}" /> 25 <!-- 最大链接数量 --> 26 <property name="maxActive" value="${dbcp.maxActive}" /> 27 <!-- 链接在池中保持空闲而不被空闲链接回收器线程(若是有)回收的最小时间值,单位毫秒 --> 28 <property name="minEvictableIdleTimeMillis" value="${dbcp.minEvictableIdleTimeMillis}" /> 29 <!-- 在空闲链接回收器线程运行期间休眠的时间值,以毫秒为单位. 若是设置为非正数,则不运行空闲链接回收器线程 --> 30 <property name="timeBetweenEvictionRunsMillis" value="${dbcp.timeBetweenEvictionRunsMillis}" /> 31 <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${db.publicKey}"/> 32 </bean>
说明:name=”connectionProperties” value=”config.decrypt=true”,这个就是配置druid进行数据库密码解密。 网站
通过简单的配置,这样配置文件里面的密码加密以后,有能够链接到数据库啦!ui
固然,使用ConfigFilter解密密码,有三种方式配置:
1) 能够在配置文件my.properties中指定config.decrypt=true
2) 也能够在DruidDataSource的ConnectionProperties中指定config.decrypt=true
3) 也能够在jvm启动参数中指定-Ddruid.config.decrypt=true加密
ConfigFilter不单单能够进行数据库加密,还能够支持配置文件从本地文件系统中读取,从远程http文件中读取配置操做,你们能够试试看!