原始碼配置解析:SpringBoot配置檔案加密Jasypt
前言
資料庫密碼直接明文寫在配置中,對安全來說,是一個很大的挑戰。一旦密碼洩漏,將會帶來很大的安全隱患。尤其在一些企業對安全性要求很高,因此我們就考慮如何對密碼進行加密。本文著重介紹Jasypt對SpringBoot配置檔案加密。
引入maven
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
生成加密串
將連線資料庫的使用者名稱和密碼進行加密
public static void main(String[] args) { BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); //加密所需的salt(鹽) textEncryptor.setPassword("Bt%XJ^n1j8mz"); //要加密的資料(資料庫的使用者名稱或密碼) String username = textEncryptor.encrypt("toutou"); String password = textEncryptor.encrypt("demo123456"); System.out.println("username:"+username); System.out.println("password:"+password); }
輸出結果如下:
將使用者名稱和密碼加密對應生成的結果複製下來,後面會用到。
回到頂部
配置properties
將生成的加密串配置ENC(加密串)到application.properties中
#資料庫相關配置 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2b8 # 加密所需的salt(鹽) #jasypt.encryptor.password=Bt%XJ^n1j8mz # 預設加密方式PBEWithMD5AndDES,可以更改為PBEWithMD5AndTripleDES #jasypt.encryptor.algorithm=PBEWithMD5AndDES spring.datasource.username=ENC(d/qt1SXvttpkiugIzTYkxg==) spring.datasource.password=ENC(rhT6VNpoRUkQYYOHAQ58V4/+fkj9CWfT) spring.datasource.max-idle=10 spring.datasource.max-wait=10000 spring.datasource.min-idle=5 spring.datasource.initial-size=5
動態salt(鹽)值
解密祕鑰也在配置檔案裡頭啊,別人拿到你伺服器上面的部署程式碼後,不是很輕鬆的就可以解開這個密碼了?
為了防止salt(鹽)洩露,反解出密碼.刪除掉application.properties中的jasypt.encryptor.password可以在本地執行中加引數。如下圖:
或是在專案部署的時候使用命令傳入salt(鹽)值。
打包時隱藏jasypt.encryptor.password,就需要打包時maven命令增加引數clean package -Djasypt.encryptor.password=Bt%XJ^n1j8mz。不加引數的話打包就會報錯。如下圖:
然後在部署時新增引數Djasypt.encryptor.password。
部署時完整命令:java -jar -Djasypt.encryptor.password=Bt%XJ^n1j8mz hello-0.0.1-SNAPSHOT.jar
回到頂部
總結
資料加密,是一門歷史悠久的技術,指通過加密演算法和加密金鑰將明文轉變為密文,而解密則是通過解密演算法和解密金鑰將密文恢復為明文。它的核心是密碼學。資料加密仍是計算機系統對資訊進行保護的一種最可靠的辦法。它利用密碼技術對資訊進行加密,實現資訊隱蔽,從而起到保護資訊的安全的作用。
安全重於泰山。
注:完整的原始碼已經上傳至git。下方掃碼新增小助手獲取連結地址
書中自有黃金屋,書中自有顏如玉,真的永遠永遠不要忘記學習
今天的內容也是我在看書實踐的過程中學到的,覺得還不錯就寫到自己的部落格,分享給大家,說不定剛好你現在手頭的業務需求需要呢?
然後我們來看一下這本書
目錄
詳細介紹
第1~6章:包含Spring 介紹、MVC、 檢視技術、資料庫訪問技術
第7~9章:Spring Boot的高階特性,包括多環境部署、自動裝配、單元測試等技術。
第10~17章:介紹當系統模組增加,效能和吞吐量要求增加時,如何平滑地用Spring Boot來實現分散式架構。
我最喜歡這本書的地方,就是他會從基礎開始講解
講到原始碼操作實踐
更有相應的架構圖解析,方便更好理解
新增小助手:msbxq2020,備註部落格園,免費獲取資料以及原始碼地址