最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot項目配置明文密碼泄露問題的處理方式

 更新時間:2022年06月17日 08:47:05   作者:北亮bl  
這篇文章主要介紹了SpringBoot項目配置明文密碼泄露問題的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

項目配置明文密碼泄露問題的處理

在項目開發(fā)過程中,需要配置數(shù)據(jù)庫連接密碼、Redis密碼、網(wǎng)盤上傳的AK/SK等敏感信息,都需要保存在配置文件里,或者配置中心。

這些信息如果泄露,還是會造成一定的困擾,這里介紹2種處理方案:

1、使用系統(tǒng)環(huán)境變量儲存密碼

比如K8S的環(huán)境變量、Windows的環(huán)境變量、Centos的環(huán)境變量等等,

然后在程序里使用 System.getenv()方法讀取。

這種方式的好處:只有運維人員知道,連開發(fā)都不知道生產(chǎn)的密碼。

密碼變更也簡單,運維直接操作就好了。

缺點就是部署時,容易遺漏,不過可以通過統(tǒng)一的環(huán)境鏡像來處理。

一般推薦這種方式

注:如果變更密碼,還是要考慮重啟一下服務器上的所有服務,避免緩存了舊密碼,導致服務故障。

2、密碼還是寫在程序的配置文件里

或者nacos之類的配置中心, 但是不使用明文,而是使用加密后的串。 同時在啟動命令行里,指定密碼參數(shù)。 下面介紹一下這種加密方式:

2.1、添加依賴,參考:https://github.com/ulisesbocchio/jasypt-spring-boot

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

2.2、對文本進行加密,假設密碼為123456,加密代碼如下(建議部署一個加密后臺,給開發(fā)用):

// 參考 https://github.com/ulisesbocchio/jasypt-spring-boot
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("123456");
// 默認值
config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
System.out.println("beinet 加密后: " + encryptor.encrypt(username));

上面的代碼輸出:beinet 加密后: 8LJb3ICopErpPuEw1S/3rHc2fkk1qPScP0ODDbnmuSBjY6NJqN1oZcAxNDVl06qv

2.3、把加密后的文本,套上 ENC()函數(shù),寫入yml配置里:

pwdTest:
  ak: ENC(8LJb3ICopErpPuEw1S/3rHc2fkk1qPScP0ODDbnmuSBjY6NJqN1oZcAxNDVl06qv)

2.4、配置一下IDEA的Java啟動命令行參數(shù):

點擊右上角 Edit Configurations… 在右側Configuration=>Environment=>VM options的右邊添加:

-Djasypt.encryptor.password=123456

2.5、運行代碼驗證一下:

@Value("${pwdTest.ak}")
private String ak;
@Override
public void run(String... args) throws Exception {
    System.out.println(ak);
}

可以看到,能成功打印出解密后的 beinet

給配置文件中用戶名密碼加密

原配置文件內(nèi)容

詳細操作步驟

1、在pom.xml文件中加依賴

<!--明文加密-->
	<dependency>
		<groupId>com.github.ulisesbocchio</groupId>
		<artifactId>jasypt-spring-boot</artifactId>
		<version>2.0.0</version>
	</dependency>

2、重新加載pom文件(因為可能會出現(xiàn)新加的依賴maven不生效) 3、找到maven倉庫中的上面的依賴的位置

eg:我的位置是這里,請注意自己的位置(肯定是在org路徑下)

4、打開PowerShell窗口(在jar包目錄中按住shift+鼠標右鍵)

5、輸入命令,執(zhí)行jar包加密

java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=“Zhiradar@135” password=Zhiradar@135 algorithm=PBEWithMD5AndDES

注:input=" ",分號中的內(nèi)容為原配置文件中的需要加密的數(shù)據(jù),該數(shù)據(jù)必須在雙引號內(nèi)

eg: input=“Zhiradar@135”

password= ,沒有引號,并且=號后面的值是你自己起的,叫啥都行(盡量復雜一點,都是為了安全性)

eg1: password=sdkjfhkhs

eg2: password=woshinibaba@163

圖示:

  • 綠色框里的為原配置文件用戶名和密碼
  • 藍色框里的為鹽值(鹽值就是你自己起的那個加密數(shù)據(jù))
  • 黃色框里的是執(zhí)行上述命令后生成的新配置文件中的用戶名和密碼

新配置文件內(nèi)容

jasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD}

這個是服務啟動時候需要給配置文件增加的環(huán)境變量參數(shù)(就是上面自己起的)

JASYPT_ENCRYPTOR_PASSWORD也是自己起的名字

要對應啟動jar包或者啟動項目是配置的環(huán)境變量用的

jasypt.encryptor.algorithm=PBEWithMD5AndDES

這個是加密方式,其實默認的就是這種

6、在啟動類上面加上注解

@EnableEncryptableProperties

表示啟動項目就開啟加密配置

7、啟動項目驗證配置正確不正確 1)打成jar包

執(zhí)行jar包形式

java -DJASYPT_ENCRYPTOR_PASSWORD=Zhiradar@135 -jar .\xxl-job-admin-2.0.2-SNAPSHOT.jar

JASYPT_ENCRYPTOR_PASSWORD=Zhiradar@135

JASYPT_ENCRYPTOR_PASSWORD自己在配置文件中配置的

Zhiradar@135 鹽值也是自己起的

2) 在IDEA中啟動

run–>Edit Configuarations

以上為xxl-job框架中的admin模塊用戶名和密碼加密(涉及到啟動項目后會在可視化平臺輸入用戶名和密碼)

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

相關文章

  • SpringBoot整合jersey的示例代碼

    SpringBoot整合jersey的示例代碼

    本篇文章主要介紹了SpringBoot整合jersey的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • Java中security與shiro的區(qū)別詳解

    Java中security與shiro的區(qū)別詳解

    這篇文章主要介紹了Java中security與shiro的區(qū)別詳解,Spring?Security在架構上將認證與授權分離,并提供了擴展點,它是一個輕量級的安全框架,它確?;赟pring的應用程序提供身份驗證和授權支持,需要的朋友可以參考下
    2023-08-08
  • Java實現(xiàn)高并發(fā)秒殺的七種方式

    Java實現(xiàn)高并發(fā)秒殺的七種方式

    本文主要介紹了Java實現(xiàn)高并發(fā)秒殺的六種方式,包括使用緩存、數(shù)據(jù)庫樂觀鎖、數(shù)據(jù)庫悲觀鎖、分布式鎖、隊列限流、令牌桶算法和限流器,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化

    基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化

    這篇文章主要介紹了基于Spring Boot DevTools實現(xiàn)開發(fā)過程優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • java JSP開發(fā)之Spring中Bean的使用

    java JSP開發(fā)之Spring中Bean的使用

    這篇文章主要介紹了java JSP開發(fā)之Spring中Bean的使用的相關資料,在Spring中,bean的生命周期就比較復雜,這里就詳細介紹下,需要的朋友可以參考下
    2017-08-08
  • Mybatis的入門示例代碼

    Mybatis的入門示例代碼

    首先新建一個JavaWeb項目并導入mybatis依賴的jar包,同時Mybatis是對數(shù)據(jù)庫的操作所以我們需要在數(shù)據(jù)庫中新建一個表user用來演示。下面通過本文給大家詳細介紹Mybatis的入門示例代碼,感興趣的朋友一起看看吧
    2016-11-11
  • 詳解springboot讀取yml配置的幾種方式

    詳解springboot讀取yml配置的幾種方式

    這篇文章主要介紹了詳解springboot讀取yml配置的幾種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-10-10
  • Java實現(xiàn)的簡單網(wǎng)頁截屏功能示例

    Java實現(xiàn)的簡單網(wǎng)頁截屏功能示例

    這篇文章主要介紹了Java實現(xiàn)的簡單網(wǎng)頁截屏功能,涉及java網(wǎng)頁打開及屏幕截圖功能相關操作技巧,需要的朋友可以參考下
    2017-12-12
  • PowerJob的CleanService清理服務流程

    PowerJob的CleanService清理服務流程

    這篇文章主要為大家介紹了PowerJob的CleanService清理服務流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2024-02-02
  • spring boot攔截器注入不了java bean的原因

    spring boot攔截器注入不了java bean的原因

    這篇文章主要介紹了spring boot攔截器注入不了java bean的原因,幫助大家更好的理解和學習spring boot框架,感興趣的朋友可以了解下
    2020-11-11

最新評論

湖南省| 曲周县| 汝州市| 沭阳县| 于都县| 屏边| 平湖市| 黑水县| 项城市| 库车县| 泽州县| 泾川县| 台中市| 翁牛特旗| 文登市| 若尔盖县| 卫辉市| 宁武县| 博野县| 阳泉市| 榕江县| 揭西县| 武汉市| 如东县| 正镶白旗| 定结县| 余庆县| 新密市| 吉安市| 甘肃省| 绥化市| 环江| 寿宁县| 吕梁市| 临清市| 佳木斯市| 吴桥县| 临泽县| 洪湖市| 玉溪市| 漳浦县|