Spring Boot加密配置文件特殊內容

有時安全不得不考慮,看看新聞泄漏事件就知道了

我們在用Spring boot進行開發時,經常要配置很多外置參數ftp、數據庫連接信息、支付信息等敏感隱私信息,如下

這不太好,特別是互聯網應用,應該用加密的方式比較安全,有點類似一些應用如電商、公安、安檢平臺、滾動式大屏中獎信息等顯示身份證號和手機號都是前幾位4109128*********和158*******。

那就把圖中的明文改造下

1.  引入加密包,可選,要是自己實現加解密算法,就不需要引入第三方加解密庫

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.2</version>
</dependency>

2.   加密敏感內容,然後填充配置文件 

加密代碼:

BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
		textEncryptor.setPassword("company");

		String name = textEncryptor.encrypt("root");
		String password = textEncryptor.encrypt("cstorfs");
	
		System.out.println("數據庫用戶名加密後:"+name);
		System.out.println("數據庫密碼加密後:"+password);

輸出加密後的效果

把這兩個值對應的填充到數據庫用戶名和密碼

3.   編寫配置類

就是Spring裏的標有@Configuration註解的類,然後解密配置文件裏的數據庫用戶名和密碼(就是上圖中的敏感屬性字段)

4.  編寫測試案例

只寫核心代碼

// 我使用的最新版Springboot2.3.0(放棄1版本)啓動後,不放心的話可以測試數據庫是否連接正常
		UserMapper userMapper = applicationContext.getBean(UserMapper.class);
		Example example = new Example(User.class);
		example.createCriteria().andEqualTo("username", "dongguangming");
		List<User> userList = userMapper.selectByExample(example);
		if (userList.size() > 0) {
			User user = userList.get(0);
			logger.info("數據庫連接正常,從用戶表取用戶名是donggguangming的數據,用戶:" + user);
		}

輸出效果:

 

ok,就是這效果!!!

注意,加解密算法沒有強制要求,可以自己寫,敏感信息(ftp、email、數據庫連接信息、支付支付寶微信等)也可以接着加,用的時候把它解密出現就行

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章