欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項(xiàng)目配置明文密碼泄露問題的處理方式

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

項(xiàng)目配置明文密碼泄露問題的處理

在項(xiàng)目開發(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()方法讀取。

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

密碼變更也簡單,運(yùn)維直接操作就好了。

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

一般推薦這種方式

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

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

或者nacos之類的配置中心, 但是不使用明文,而是使用加密后的串。 同時(shí)在啟動命令行里,指定密碼參數(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、對文本進(jìn)行加密,假設(shè)密碼為123456,加密代碼如下(建議部署一個(gè)加密后臺,給開發(fā)用):

// 參考 https://github.com/ulisesbocchio/jasypt-spring-boot
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("123456");
// 默認(rèn)值
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ù):

點(diǎn)擊右上角 Edit Configurations… 在右側(cè)Configuration=>Environment=>VM options的右邊添加:

-Djasypt.encryptor.password=123456

2.5、運(yùn)行代碼驗(yàn)證一下:

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

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

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

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

詳細(xì)操作步驟

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

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

2、重新加載pom文件(因?yàn)榭赡軙霈F(xiàn)新加的依賴maven不生效) 3、找到maven倉庫中的上面的依賴的位置

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

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

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= ,沒有引號,并且=號后面的值是你自己起的,叫啥都行(盡量復(fù)雜一點(diǎn),都是為了安全性)

eg1: password=sdkjfhkhs

eg2: password=woshinibaba@163

圖示:

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

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

jasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD}

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

JASYPT_ENCRYPTOR_PASSWORD也是自己起的名字

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

jasypt.encryptor.algorithm=PBEWithMD5AndDES

這個(gè)是加密方式,其實(shí)默認(rèn)的就是這種

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

@EnableEncryptableProperties

表示啟動項(xiàng)目就開啟加密配置

7、啟動項(xiàng)目驗(yàn)證配置正確不正確 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模塊用戶名和密碼加密(涉及到啟動項(xiàng)目后會在可視化平臺輸入用戶名和密碼)

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

相關(guān)文章

  • java創(chuàng)建線程池的7種實(shí)現(xiàn)方法

    java創(chuàng)建線程池的7種實(shí)現(xiàn)方法

    在Java中線程池是一種管理線程的機(jī)制,它可以創(chuàng)建一組線程并重復(fù)使用它們,避免了創(chuàng)建和銷毀線程的開銷,這篇文章主要給大家介紹了關(guān)于java創(chuàng)建線程池的7種實(shí)現(xiàn)方法,需要的朋友可以參考下
    2023-10-10
  • new出來的對象中無法使用@autowired進(jìn)行對象bean注入問題

    new出來的對象中無法使用@autowired進(jìn)行對象bean注入問題

    這篇文章主要介紹了基于new出來的對象中無法使用@autowired進(jìn)行對象bean注入問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Mybatis打印替換占位符后的完整Sql教程

    Mybatis打印替換占位符后的完整Sql教程

    這篇文章主要介紹了Mybatis打印替換占位符后的完整Sql教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java中的ReentrantLock使用解析

    Java中的ReentrantLock使用解析

    這篇文章主要介紹了Java中的ReentrantLock使用解析,ReentrandLock即可重入鎖,可重入鎖解決的是重入鎖定的問題,重入鎖定指的是當(dāng)一個(gè)線程執(zhí)行邏輯時(shí),需要兩次獲取鎖,而該鎖不可重入就會導(dǎo)致內(nèi)部嵌套無法獲取鎖導(dǎo)致Reentrance Lockout發(fā)生,需要的朋友可以參考下
    2023-11-11
  • 講解Java設(shè)計(jì)模式編程中的建造者模式與原型模式

    講解Java設(shè)計(jì)模式編程中的建造者模式與原型模式

    這篇文章主要介紹了Java設(shè)計(jì)模式編程中的建造者模式與原型模式,設(shè)計(jì)模式有利于團(tuán)隊(duì)開發(fā)過程中的代碼維護(hù),需要的朋友可以參考下
    2016-02-02
  • Java?中導(dǎo)入excel時(shí)使用?trim()?無法去除空格的問題解決方案

    Java?中導(dǎo)入excel時(shí)使用?trim()?無法去除空格的問題解決方案

    這篇文章主要介紹了Java中導(dǎo)入excel時(shí)使用trim()無法去除空格的解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Java連接redis及基本操作示例

    Java連接redis及基本操作示例

    這篇文章主要介紹了Java連接redis及基本操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了java針對redis數(shù)據(jù)庫的基本連接、配置及操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-04-04
  • java如何實(shí)時(shí)動態(tài)獲取properties文件的內(nèi)容

    java如何實(shí)時(shí)動態(tài)獲取properties文件的內(nèi)容

    這篇文章主要介紹了java如何實(shí)時(shí)動態(tài)獲取properties文件的內(nèi)容,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java根據(jù)本地IP獲取mac地址的方法

    java根據(jù)本地IP獲取mac地址的方法

    這篇文章主要為大家詳細(xì)介紹了java根據(jù)本地IP獲取mac地址的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java 多線程實(shí)例詳解(二)

    Java 多線程實(shí)例詳解(二)

    本文主要介紹Java 多線程的資料整理,這里整理了詳細(xì)資料及相關(guān)示例代碼,有興趣的小伙伴可以參考下
    2016-09-09

最新評論