亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Springboot對(duì)配置文件中的敏感信息加密

 更新時(shí)間:2021年08月13日 16:43:32   作者:iFence  
這篇文章主要介紹了使用Springboot對(duì)配置文件中的敏感信息加密方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Springboot對(duì)配置文件的敏感信息加密

前言

最近公司對(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)目配置

該項(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)
# 加密密碼所需要的鹽(隨便寫)。為了更加安全,這一行配置不要寫在配置文件中,可以寫在啟動(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ù)中下載。

注意事項(xiàng)

由于該方法是對(duì)稱加密方式,因此系統(tǒng)在解密的時(shí)候同樣需要此鹽,但是鹽一定不能對(duì)外暴露。因此在第二步配置文件中并沒(méi)有配置解密所需的鹽,而是改用在系統(tǒng)啟動(dòng)時(shí)通過(guò)命令行傳參的方式傳入。

總結(jié)一下

  • 本方案依賴jasypt庫(kù),可以對(duì)配置文件中任意字符串進(jìn)行加密,不僅僅局限于密碼,更不僅僅局限于mysql密碼。
  • 由于采用對(duì)稱加密算法,如果泄露了加密需要的鹽(上文提到的jasypt.encryptor.password參數(shù)),很容易對(duì)密碼進(jìn)行解密。因此加密用的鹽需要寫在配置文件外面,啟動(dòng)參數(shù)中。

springboot使用加密的配置屬性

依賴:

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

1、加密屬性配置

在application.properties或者相應(yīng)的proffile的properties文件

其中

jasypt.encryptor.password = klklklklklklklkl 是加解密的鹽

enc是加密變量使用的特殊符號(hào).

2、也可以把這些配置

到apollo中如果使用了apollo配置中心

代碼執(zhí)行的效果

參考:

https://github.com/ulisesbocchio/jasypt-spring-boot

https://github.com/ctripcorp/apollo-use-cases/tree/master/spring-boot-encrypt

本文目的是說(shuō)明這個(gè)是springboot支持的 既支持普通boot項(xiàng)目 也可以用于apollo配置中心

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot 文件或圖片上傳與下載功能的實(shí)現(xiàn)

    SpringBoot 文件或圖片上傳與下載功能的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot 文件或圖片上傳與下載功能的實(shí)現(xiàn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java多線程實(shí)現(xiàn)之Executor詳解

    Java多線程實(shí)現(xiàn)之Executor詳解

    這篇文章主要介紹了Java多線程實(shí)現(xiàn)之Executor詳解,Executor 給他一個(gè) Runnable,他就能自動(dòng)很安全的幫你把這個(gè)線程執(zhí)行完畢
    Executor 通過(guò)創(chuàng)建線程池的方式來(lái)管理線程,需要的朋友可以參考下
    2023-08-08
  • Struts2攔截器Interceptor的原理與配置實(shí)例詳解

    Struts2攔截器Interceptor的原理與配置實(shí)例詳解

    攔截器是一種AOP(面向切面編程)思想的編程方式.它提供一種機(jī)制是開(kāi)發(fā)者能夠把相對(duì)獨(dú)立的代碼抽離出來(lái),配置到Action前后執(zhí)行。下面這篇文章主要給大家介紹了關(guān)于Struts2攔截器Interceptor的原理與配置的相關(guān)資料,需要的朋友可以參考下。
    2017-11-11
  • java與php的區(qū)別淺析

    java與php的區(qū)別淺析

    在本篇文章里小編給大家整理了關(guān)于java與php的區(qū)別以及相關(guān)知識(shí)點(diǎn),有興趣的朋友們學(xué)習(xí)下。
    2019-03-03
  • Maven執(zhí)行單元(Execution)的精細(xì)化控制詳解

    Maven執(zhí)行單元(Execution)的精細(xì)化控制詳解

    在持續(xù)集成與DevOps實(shí)踐中,構(gòu)建工具的精確定義能力往往決定著軟件交付的最終質(zhì)量,執(zhí)行單元(Execution)作為Maven生命周期與插件目標(biāo)之間的核心紐帶,承擔(dān)著連接抽象構(gòu)建階段與具體實(shí)施動(dòng)作的關(guān)鍵職責(zé),本文將聚焦Execution的四個(gè)關(guān)鍵控制維度,需要的朋友可以參考下
    2025-05-05
  • 利用stream sorted進(jìn)行降序排序

    利用stream sorted進(jìn)行降序排序

    這篇文章主要介紹了利用stream sorted進(jìn)行降序排序,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Java Spring Bean的生命周期管理詳解

    Java Spring Bean的生命周期管理詳解

    這篇文章主要為大家介紹了Java Spring Bean的生命周期管理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • 詳解spring applicationContext.xml 配置文件

    詳解spring applicationContext.xml 配置文件

    本篇文章主要介紹了詳解spring applicationContext.xml 配置文件 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 詳解Spring簡(jiǎn)單容器中的Bean基本加載過(guò)程

    詳解Spring簡(jiǎn)單容器中的Bean基本加載過(guò)程

    本篇將對(duì)定義在 XMl 文件中的 bean,從靜態(tài)的的定義到變成可以使用的對(duì)象的過(guò)程,即 bean 的加載和獲取的過(guò)程進(jìn)行一個(gè)整體的了解
    2017-05-05
  • Token安全存儲(chǔ)的幾種方式小結(jié)

    Token安全存儲(chǔ)的幾種方式小結(jié)

    在現(xiàn)代 Web 應(yīng)用中,身份認(rèn)證與授權(quán)是確保系統(tǒng)安全性的重要部分,Token被廣泛應(yīng)用,作為實(shí)現(xiàn)身份認(rèn)證的主要方式,然而,如何安全地存儲(chǔ)這些 Token,是每個(gè)開(kāi)發(fā)者在構(gòu)建前端應(yīng)用時(shí)必須考慮的問(wèn)題,本文將深入探討Token安全存儲(chǔ)的幾種方式,需要的朋友可以參考下
    2025-04-04

最新評(píng)論