Spring?Boot配置內容加密實現(xiàn)敏感信息保護
在之前的系列教程中,我們已經介紹了非常多關于Spring Boot配置文件中的各種細節(jié)用法,比如:參數(shù)間的引用、隨機數(shù)的應用、命令行參數(shù)的使用、多環(huán)境的配置管理等等。
為什么要加密?
可能很多初學者,對于配置信息的加密并不敏感,因為開始主要接觸本地的開發(fā),對于很多安全問題并沒有太多的考慮。而現(xiàn)實中,我們的配置文件中,其實包含著大量與安全相關的敏感信息,比如:數(shù)據(jù)庫的賬號密碼、一些服務的密鑰等。這些信息一旦泄露,對于企業(yè)的重要數(shù)據(jù)資產,那是相當危險的。 所以,對于這些配置文件中存在的敏感信息進行加密,是每個成熟開發(fā)團隊都一定會去的事。
第一步:創(chuàng)建一個基礎的Spring Boot項目
第二步:設計一個參數(shù)和單元測試,用來輸出這個配置信息
準備加密的配置:
datasource.password=didispace.com
用來輸出配置信息的單元測試:
@Slf4j @SpringBootTest public class PropertiesTest { @Value("${datasource.password:}") private String password; @Test public void test() { log.info("datasource.password : {}", password); } }
執(zhí)行這個單元測試,會輸出:
2021-08-13 22:28:45.506? INFO 70405 --- [? ? ? ? ? ?main] com.didispace.chapter15.PropertiesTest? ?: datasource.password : didispace.com
這里還沒開始加密,下面我們開始引入加密的操作!
第三步:在pom.xml
中引入jasypt提供的Spring Boot Starter
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
在插件配置中加入:
<plugin> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-maven-plugin</artifactId> <version>3.0.3</version> </plugin>
第四步:在配置文件中加入加密需要使用的密碼
jasypt.encryptor.password=didispace
同時,修改要加密的內容,用DEC()
將待加密內容包裹起來,比如:
datasource.password=DEC(didispace.com)
第五步:使用jasypt-maven-plugin
插件來給DEC()
包裹的內容實現(xiàn)批量加密。
在終端中執(zhí)行下面的命令:
mvn jasypt:encrypt -Djasypt.encryptor.password=didispace
注意:這里-Djasypt.encryptor.password參數(shù)必須與配置文件中的一致,不然后面會解密失敗。
執(zhí)行之后,重新查看配置文件,可以看到,自動變成了
datasource.password=
ENC(/AL9nJENCYCh9Pfzdf2xLPsqOZ6HwNgQ3AnMybFAMeOM5GphZlOK6PxzozwtCm+Q)
jasypt.encryptor.password=didispace
其中,ENC()
跟DEC()
一樣都是jasypt提供的標識,分別用來標識括號內的是加密后的內容和待加密的內容。
如果當前配置文件已經都是ENC()
內容了,那么我們可以通過下面的命令來解密配置文件,查看原始信息:
mvn jasypt:decrypt -Djasypt.encryptor.password=didispace
該操作不會修改配置文件,只會在控制臺輸出解密結果,比如:
datasource.password=DEC(didispace.com)
jasypt.encryptor.password=didispace
第六步:此時,我們的配置文件中的敏感信息已經被ENC()
修飾了,再執(zhí)行一下單元測試,不出意外的話,依然可以得到之前一樣的結果:
2021-08-13 22:50:00.463? INFO 76150 --- [? ? ? ? ? ?main] com.didispace.chapter15.PropertiesTest? ?: datasource.password : didispace.com
而此時,配置文件中已經是加密內容了,敏感信息得到了保護。
以上就是Spring Boot配置內容加密實現(xiàn)敏感信息保護的詳細內容,更多關于Spring Boot配置內容加密保護敏感信息的資料請關注腳本之家其它相關文章!
相關文章
springboot+rabbitmq實現(xiàn)智能家居實例詳解
這篇文章主要為大家介紹了springboot+rabbitmq實現(xiàn)智能家居的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07java poi設置生成的word的圖片為上下型環(huán)繞以及其位置的實現(xiàn)
這篇文章主要介紹了java poi設置生成的word的圖片為上下型環(huán)繞以及其位置的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-09-09Java數(shù)組實現(xiàn)動態(tài)初始化的實例詳解
在本篇文章里小編給大家整理的是一篇關于Java數(shù)組實現(xiàn)動態(tài)初始化的實例詳解內容,有興趣的朋友們可以學習下。2021-10-10Caused?by:?java.lang.NumberFormatException:?For?input?s
這篇文章主要介紹了Caused?by:?java.lang.NumberFormatException:?For?input?string:?“port“,本文給大家分享完美解決方法,需要的朋友可以參考下2023-01-01SpringBoot整合Sharding-JDBC實現(xiàn)MySQL8讀寫分離
本文是一個基于SpringBoot整合Sharding-JDBC實現(xiàn)讀寫分離的極簡教程,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的可以了解一下2021-07-07Java8之函數(shù)式接口及常用函數(shù)式接口講解
這篇文章主要介紹了Java8之函數(shù)式接口及常用函數(shù)式接口,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-11-11