原文連接:http://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.15.jar com.alibaba.druid.filter.config.ConfigTools 123456
輸出:
Biyu5YzU+6sxDRbmWEa3B2uUcImzDo0BuXjTlL505+/pTb+/0Oqd3ou1R6J8+9Fy3CYrM18nBDqf6wAaPgUGOg==
- 1
- 2
- 3
- 4
輸出的結果就是加密后的密碼啦!xxxxxx為你的數據庫密碼明文。
第二步:?
配置數據源,使用Druid配置數據源對數據庫密碼進行解密。
<!-- Druid JNDI DataSource for J2EE environments -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="url" value="${jdbcUrl}" /><property name="username" value="${username}" /><property name="password" value="${password}" /><!-- 配置初始化大小、最小、最大 --><property name="initialSize" value="5" /><property name="minIdle" value="5" /><property name="maxActive" value="20" /><!-- 配置獲取連接等待超時的時間 --><property name="maxWait" value="60000" /><!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="3000" /><!-- 配置一個連接在池中最小生存的時間,單位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000" /><property name="validationQuery" value="SELECT 'x' FROM DUAL" /><property name="testWhileIdle" value="true" /><property name="testOnBorrow" value="false" /><property name="testOnReturn" value="false" /><!--打開PSCache,并且指定每個連接上PSCache的大小 ,Oracle,把poolPreparedStatements配置為true,mysql可以配置為false。分庫分表較多的數據庫,建議配置為false--><!--<property name="poolPreparedStatements" value="true" />--><!--<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />--><!-- 開啟Druid的監控統計功能 --><property name="filters" value="stat,config" /><!-- 開啟數據庫密碼解密--><property name="connectionProperties" value="config.decrypt=true" />
</bean>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
說明:這個數據源配置跟上一篇的配置大致相同,唯一的區別就是增加了開啟數據庫密碼解密功能。name=”connectionProperties” value=”config.decrypt=true”,這個就是配置druid進行數據庫密碼解密。?
值得注意的是:property name=”filters” value=”stat,config”這里面可以配置多個filter,除了上一次監控統計的stat,這次解密我們需要添加config。
經過簡單的配置,這樣配置文件里面的密碼加密之后,有可以連接到數據庫啦!
當然,使用ConfigFilter解密密碼,有三種方式配置:?
1) 可以在配置文件my.properties中指定config.decrypt=true?
2) 也可以在DruidDataSource的ConnectionProperties中指定config.decrypt=true?
3) 也可以在jvm啟動參數中指定-Ddruid.config.decrypt=true
ConfigFilter不僅僅可以進行數據庫加密,還可以支持配置文件從本地文件系統中讀取,從遠程http文件中讀取配置操作,大家可以試試看!