为了解决项目中明文密码安全问题,我们可以将数据库连接密码进行加密配置。

找到项目中使用的druid jar包, 以druid-1.0.21.jar为例,将该jar包放到指定目录下(如D:\app\pass),打开cmd窗口,打开到jar包所在目录,执行如下命令:

java -cp druid-1.0.21.jar com.alibaba.druid.filter.config.ConfigTools 123123 > pwd.txt
执行成功后加密后的密码和密钥会写入同目录pwd.txt文件中,如下:

打开项目数据源配置文件,配置filtersconnectionProperties ,加入如下配置:
		<property name="filters" value="${filters}" />
		<property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${publicKey}" />

加密配置前:

#全局配置 
usr=dbname
pwd=123123

#DruidDataSource cfg
filters:stat

 加密配置后:

#全局配置 
usr=dbname
pwd=Ma/m8CgnyRtqIXsruLe2lGdg+qF7Tu6o7vqTdUzOl33/3nKwAYKTtPl5DCVPOChNfiN4UwzfpO0Sf+Gm3Ztvhg==
publicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJLfY/edkeWgQ2fdsQXz2OzZ14HTyRcFrEbxv4pdCCq59y1PjTVk0/F+HBte0fI2qqlK0XpJj8emuxHIpHrC85kCAwEAAQ==

#DruidDataSource cfg
filters:config
<!-- 数据源 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
		<property name="url" value="${url}" />
		<property name="username" value="${usr}" />
		<property name="password" value="${pwd}" />
		<property name="driverClassName" value="${driverClassName}" />
		
		## 重点配置 -- 以下  过滤器配置:已经全局配置使用 filters:config,stat
		<property name="filters" value="${filters}" />
		<property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${publicKey}" />
		## 重点配置 -- 以上

		<property name="maxActive" value="${maxActive}" />
		<property name="initialSize" value="${initialSize}" />
		<property name="maxWait" value="${maxWait}" />
		<property name="minIdle" value="${minIdle}" />
		<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}" />
		<property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}" />
		<property name="validationQuery" value="${validationQuery}" />
		<property name="testWhileIdle" value="${testWhileIdle}" />
		<property name="testOnBorrow" value="${testOnBorrow}" />
		<property name="testOnReturn" value="${testOnReturn}" />
		<!--  <property name="maxPoolPreparedStatementPerConnectionSize" value="${maxPoolPreparedStatementPerConnectionSize}" /> -->
	</bean>
至此,druid 数据库连接密码加密配置完成,希望对你有所帮助。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐