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文件中讀取配置操做,你們能夠試試看!