有時安全不得不考慮,看看新聞泄漏風波事件就知道了
我們在用Spring boot進行開發時,經常要配置很多外置引數ftp、資料庫連接資訊、支付資訊等敏感隱私資訊,如下

?
這不太好,特別是互聯網應用,應該用加密的方式比較安全,有點類似一些應用如電商、公安、安檢平臺、滾動式大屏中獎資訊等顯示身份證號和手機號都是前幾位4109128*********和158*******,
那就把圖中的明文改造下
1. 引入加密包,可選,要是自己實作加解密演算法,就不需要引入第三方加解密庫
/ncom.github.ulisesbocchio /njasypt-spring-boot-starter /n3.0.2 /n"}"><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. 撰寫測驗案例
只寫核心代碼
userList = userMapper.selectByExample(example);/n/t/tif (userList.size() > 0) {/n/t/t/tUser user = userList.get(0);/n/t/t/tlogger.info(/"資料庫連接正常,從用戶表取用戶名是donggguangming的資料,用戶:/" + user);/n/t/t}"}">// 我使用的最新版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、資料庫連接資訊、支付支付寶微信等)也可以接著加,用的時候把它解密出現就行
參考:
0. Spring Boot: How to encrypt properties in application.properties
http://mbcoder.com/spring-boot-how-to-encrypt-properties-in-application-properties/
1. Spring Boot Configuration with Jasypt https://www.baeldung.com/spring-boot-jasypt
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/178808.html
標籤:Java
