您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么用Springboot對(duì)配置文件中的敏感信息加密”,在日常操作中,相信很多人在怎么用Springboot對(duì)配置文件中的敏感信息加密問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”怎么用Springboot對(duì)配置文件中的敏感信息加密”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
最近公司對(duì)軟件的安全問(wèn)題比較在意,要求對(duì)配置文件中的敏感信息如數(shù)據(jù)庫(kù)密碼等進(jìn)行加密。但是Springboot是一款高度集成的框架,如果僅僅是簡(jiǎn)單的對(duì)數(shù)據(jù)庫(kù)密碼進(jìn)行加密了,由于連接數(shù)據(jù)庫(kù)的操作是框架自己完成的,這就會(huì)造成不小的麻煩。
經(jīng)過(guò)調(diào)研,找到了如下方式還比較方便。
該項(xiàng)目用到了jasypt庫(kù)。原理很簡(jiǎn)單,通過(guò)該庫(kù)提供的方法進(jìn)行敏感信息加密,生成密文xxxxx,然后將密文使用ENC()包裹起來(lái)。
<!-- jasypt場(chǎng)景啟動(dòng)器依賴 --> <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
配置文件中密碼將原來(lái)的明文密碼改為ENC(密文密碼)的樣子,如下:
# 原MySQL密碼,刪掉不用 #spring.datasource.password=xxxx # 加密后的MySQL密碼 spring.datasource.password=ENC(BSYVaS0K9UEIIZACPLduGUumokOpB44c==) # 如果是其他需要加密的密碼,比如es密碼es123456 es.password=ENC(xxxxxxx) # 加密密碼所需要的鹽(隨便寫(xiě))。為了更加安全,這一行配置不要寫(xiě)在配置文件中,可以寫(xiě)在啟動(dòng)參數(shù)中 jasypt.encryptor.password=nmyswls # 指定使用的算法 # 可選算法有:PBEWITHHMACSHA512ANDAES_256、PBEWITHHMACSHA512ANDAES_128、PBEWithMD5AndDES jasypt.encryptor.algorithm=PBEWithMD5AndDES
加密過(guò)程中需要使用到鹽,鹽的設(shè)置不要太隨意,因?yàn)樵瓌t上鹽不能存儲(chǔ)又不能忘記,所以盡量遵循一定的命名規(guī)則,供內(nèi)部人員依據(jù)規(guī)則判斷鹽是什么。
# 其中下面運(yùn)行的jar包為上面maven依賴中所指定的jar包,input參數(shù)為需要加密的字符串,password參數(shù)為加密所需的鹽。 java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="str" password="salt" algorithm=PBEWithMD5AndDES
上述jar包可以從maven中央倉(cāng)庫(kù)中下載。
由于該方法是對(duì)稱加密方式,因此系統(tǒng)在解密的時(shí)候同樣需要此鹽,但是鹽一定不能對(duì)外暴露。因此在第二步配置文件中并沒(méi)有配置解密所需的鹽,而是改用在系統(tǒng)啟動(dòng)時(shí)通過(guò)命令行傳參的方式傳入。
本方案依賴jasypt庫(kù),可以對(duì)配置文件中任意字符串進(jìn)行加密,不僅僅局限于密碼,更不僅僅局限于mysql密碼。
由于采用對(duì)稱加密算法,如果泄露了加密需要的鹽(上文提到的jasypt.encryptor.password參數(shù)),很容易對(duì)密碼進(jìn)行解密。因此加密用的鹽需要寫(xiě)在配置文件外面,啟動(dòng)參數(shù)中。
依賴:
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>1.16</version> </dependency>
在application.properties或者相應(yīng)的proffile的properties文件
其中
jasypt.encryptor.password = klklklklklklklkl 是加解密的鹽
enc是加密變量使用的特殊符號(hào).
到apollo中如果使用了apollo配置中心
代碼執(zhí)行的效果
到此,關(guān)于“怎么用Springboot對(duì)配置文件中的敏感信息加密”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。