專案要求給資料庫連線配置檔案(jdbc.properties)中賬號密碼優化處理
阿新 • • 發佈:2019-01-02
由於專案釋出伺服器是打包成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 "[email protected]";
}
return propertyValue;
}
}
然後將上面完成的類的完全限定名替換配置檔案中的PropertyPlaceholderConfigurer:
更改後啟動伺服器使用的並不是jdbc.properties中key值為username=root和password=123456後面的值,而是使用替換後的username=root和[email protected] 去進行訪問資料庫的