由于项目发布服务器是打包成war包发布,其中jdbc.properties等配置文件存在数据库密码泄露问题,查阅资料后get一个小方法避免面泄露问题,特此记录一波
我们项目中经常使用到的数据库配置文件(spring-mybatis.xml)如下
这里会有一个致命的问题,如果有一个具备中间件服务器机器访问权限的人,看到了这个例如(jdbc.properties)的文件,并且打开该文件,智商再低下的人也会知道数据库的用户名和密码是什么。这对于对安全有一定要求的行业是必须杜绝的,这个也是在一般技术面试中会问到的一个问题。那就让我们继续往下,解答这个问题吧!
如何将jdbc.properties变成一个看不明白的字符呢?我们只需要覆写类PropertyPlaceholderConfigurer中的方法convertProperty就可以了,如下:
package com.cht.oneoperation.fileUtils;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/**
* 读取数据库连接配置文件并将获取到的账号密码更改为正确账户密码
* @author 创建作者 : LY
* @date 创建时间 :2018年08月14日 下午14:57:32
*/
public class MyJdbcPropertiesPswConfig extends PropertyPlaceholderConfigurer {
@Override
protected String convertProperty(String propertyName, String propertyValue) {
// System.out.println("===>" + propertyName + ":" + propertyValue);
if ("username".equals(propertyName)) {
return "root";
}
if ("password".equals(propertyName)) {
return "admin@001";
}
return propertyValue;
}
}
然后将上面完成的类的完全限定名替换配置文件中的PropertyPlaceholderConfigurer:
更改后启动服务器使用的并不是jdbc.properties中key值为username=root和password=123456后面的值,而是使用替换后的username=root和password=admin@001 去进行访问数据库的