加密JDBC配置文件中的用户密码

项目中使用JDBC连接数据库,一般配置如下:

  

如果有用户这台服务器访问权限(比如root),就可以看到这个applicationContext.xml文件,并且打开文件获取数据库的用户和密码,所以不够安全,需要对这里的密码进行加密。

首先,将配置文件中这些value抽取到property文件中。

  
      
  

PropertyPlaceholderConfigurer类是负责抓取jdbc.properties中的属性值,填充到dataSource中相应的位置。

接下来,将jdbc.properties中的密码值进行压缩(可以使用其它方式),得到一个不易记忆的字符串,这需要实现PropertyPlaceholderConfigurer(extends PropertyResourceConfigurer)的解密方法convertProperty。

package net.jdbc.util;  
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; 
import net.jdbc.util.ZipUtil; 
  
public class JdbcPwdPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer{  
    @Override  
    protected String convertProperty(String propertyName, String propertyValue) {  
        System.out.println(propertyName + " -> " + propertyValue);  
        if("passwd".equals(propertyName)){  
            return ZipUtil.unzip(propertyValue);  
        }  
        return propertyValue;  
    }  
}  

然后在配置文件中,将JdbcPwdPropertyPlaceholderConfigurer类替换PropertyPlaceholderConfigurer。

  

jdbc.properties文件内容如下:

driverClassname=oracle.jdbc.driver.OracleDriver  
url=jdbc:oracle:thin:@127.0.0.1:1521:orcl  
username=test
passwd=UEsDBBQACAgIAK5QqUoAAAAAAAAAAAAAAAABAAAAMCtJLS4BAFBLBwgMfn/YBgAAAAQAAAA=

进行单元测试,打印日志内容。

driverClassname -> oracle.jdbc.driver.OracleDriver
url -> jdbc:oracle:thin:@127.0.0.1:1523:orcl
username -> test
passwd -> UEsDBBQACAgIAK5QqUoAAAAAAAAAAAAAAAABAAAAMCtJLS4BAFBLBwgMfn/YBgAAAAQAAAA=

你可能感兴趣的:(加密JDBC配置文件中的用户密码)