spring 加密 Druid 连接池—— 加密 url,driverClassName,用户名,密码
Posted 川雨淅
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring 加密 Druid 连接池—— 加密 url,driverClassName,用户名,密码相关的知识,希望对你有一定的参考价值。
why?
连接信息暴露在配置文件中有风险
how?
一、准备加密后连接信息
使用Druid自带工具类ConfigTools加密连接信息
import com.alibaba.druid.filter.config.ConfigTools; public class DecryptDruid { public DecryptDruid() { super(); // TODO Auto-generated constructor stub } public static void main(String[] args){ DecryptDruid dp = new DecryptDruid(); String[] myUserPass ={url,driverclassname,username,password}; for(int i = 0;i < myUserPass.length();i++){ dp.testDecrypt(dp.testEncrypt(myUserPass)); } } /** * 对文字进行解密 * @throws Exception */ public String testDecrypt(String encry){ //解密 String word=encry; String decryptword=""; try { decryptword = ConfigTools.decrypt(word); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println(decryptword); return decryptword; } /** * 文字进行加密 * @throws Exception */ public String testEncrypt(String userpass) { //加密 String encryptword = ""; try { encryptword = ConfigTools.encrypt(userpass); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } System.out.println(encryptword); return encryptword; } }
二、准备解密方法类
继承DruidDataSource,覆盖父类连接信息set方法
import com.alibaba.druid.filter.config.ConfigTools; import com.alibaba.druid.pool.DruidDataSource; @SuppressWarnings("serial") public class EncryptDruidDataSource extends DruidDataSource{ @Override public void setUrl(String url){ try { url = ConfigTools.decrypt(url); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setUrl(url); } @Override public void setDriverClassName(String driverClassName){ try { driverClassName = ConfigTools.decrypt(driverClassName); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setDriverClassName(driverClassName); } @Override public void setUsername(String username){ try { username = ConfigTools.decrypt(username); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setUsername(username); } @Override public void setPassword(String password){ try { password = ConfigTools.decrypt(password); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } super.setPassword(password); } }
三、更改配置文件
将加密后连接信息加入配置文件
filters=config
四、更改dataSource配置
<bean id="dataSource" class="com.**.**.EncryptDruidDataSource" destroy-method="close">
添加:
<property name="connectionProperties" value="config.decrypt=true;" />
OK!
不过,配置mybatis会有databaseid not found问题,如有解决者,望赐教!
以上是关于spring 加密 Druid 连接池—— 加密 url,driverClassName,用户名,密码的主要内容,如果未能解决你的问题,请参考以下文章