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

Spring Boot加密配置文件方法介紹

 更新時(shí)間:2023年01月18日 08:30:24   作者:做網(wǎng)安的小王  
這篇文章主要介紹了SpringBoot加密配置文件,近期在對(duì)開(kāi)發(fā)框架安全策略方面進(jìn)行升級(jí)優(yōu)化,提供一些通用場(chǎng)景的解決方案,本文針對(duì)配置文件加密進(jìn)行簡(jiǎn)單的分享

在實(shí)踐中,項(xiàng)目的某些配置信息是需要進(jìn)行加密處理的,以減少敏感信息泄露的風(fēng)險(xiǎn)。比如,在使用Druid時(shí),就可以基于它提供的公私鑰加密方式對(duì)數(shù)據(jù)庫(kù)的密碼進(jìn)行加密。

但更多時(shí)候,比如Redis密碼、MQ密碼等敏感信息,也需要進(jìn)行加密,此時(shí)就沒(méi)那么方便了。本篇文章給大家介紹一款Java類庫(kù)Jasypt,同時(shí)基于Spring Boot項(xiàng)目來(lái)演示一下如何對(duì)配置文件信息進(jìn)行加密。

一個(gè)簡(jiǎn)單的SpringBoot項(xiàng)目

我們先來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的Spring Boot項(xiàng)目,構(gòu)建一個(gè)加密數(shù)據(jù)運(yùn)用的場(chǎng)景。

無(wú)論通過(guò)Idea或官網(wǎng)等方式,先創(chuàng)建一個(gè)Spring Boot項(xiàng)目,核心依賴為:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--  為了方便,通常會(huì)引入Lombok依賴  -->
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency> 

創(chuàng)建一個(gè)配置文件類ConfigProperties:

@Data
@Component
public class ConfigProperties {
?@Value("${conf.url}")private String url;
?@Value("${conf.password}")private String password;
} 

配置文件中的配置屬性注入到該類,以供后續(xù)使用。

創(chuàng)建一個(gè)Controller類,用來(lái)測(cè)試驗(yàn)證,是否能夠正常運(yùn)行:

@RestController
@RequestMapping("/")
public class ConfigController {
?@Resourceprivate ConfigProperties configProperties;
?@RequestMappingpublic void print(){System.out.println(configProperties.getUrl());System.out.println(configProperties.getPassword());}
} 

對(duì)應(yīng)ConfigProperties類,application.properties中配置如下:

conf.url=127.0.0.1
conf.password=admin123 

此時(shí),啟動(dòng)項(xiàng)目,訪問(wèn)Controller,能夠正常打印出配置信息,說(shuō)明程序可以正常運(yùn)行。

但配置文件中直接明文展示了password項(xiàng),如果別人看到該配置文件,就可能導(dǎo)致密碼的泄露。

基于Jasypt的加密

針對(duì)上述情況,通常,我們會(huì)對(duì)敏感信息進(jìn)行加密,避免明文密碼信息暴露,提升安全等級(jí)。

加密的基本思路是:配置文件中存儲(chǔ)加密內(nèi)容,在解析配置文件注入時(shí)進(jìn)行解密。

但如果拿到項(xiàng)目源碼,知道加密算法和秘鑰,肯定是可以解密的。這里的加密,只是多一層安全防護(hù),但并不是萬(wàn)能的。

下面看看如何基于Jasypt來(lái)進(jìn)行加密處理。

集成步驟

下面基于上述Spring Boot項(xiàng)目進(jìn)行改造升級(jí)。

環(huán)境準(zhǔn)備

不同版本的Jasypt使用方法有所不同,這里基于3.0.4版本、JDK8、Spring Boot 2.5.5來(lái)進(jìn)行演示。

在使用之前,首先檢查一下JDK8的JRE中是否安裝了不限長(zhǎng)度的JCE版本,否則在執(zhí)行加密操作時(shí)會(huì)拋出解密失敗的異常。

進(jìn)入$JAVA_HOME/jre/lib/security目錄,查看是否包含local_policy.jar和US_export_policy.jar兩個(gè)jar包。如果不包含,則通過(guò)Oracle官網(wǎng)進(jìn)行下載,下載地址:https://pan.baidu.com/s/1pLUNUBvF6TWudeYcf5BNjA?pwd=qgk9。

下載文件為:jce_policy-8.zip

文件內(nèi)包含三個(gè)文件:

README.txt
local_policy.jar
US_export_policy.jar 

查看$JAVA_HOME/jre/lib/security目錄下是否有這兩個(gè)jar包文件,如果沒(méi)有則復(fù)制進(jìn)去,如果有可考慮覆蓋。

引入依賴

在Spring Boot中集成Jasypt比較簡(jiǎn)單,直接引入如下依賴即可:

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

此時(shí),Jasypt組件自動(dòng)配置便已經(jīng)生效,只需要對(duì)需要加密的數(shù)據(jù)進(jìn)行處理了。

為了方便對(duì)密碼進(jìn)行加密,還可以在pom.xml中的build元素中引入對(duì)應(yīng)的plugin,這個(gè)后面會(huì)用到:

<plugin><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-maven-plugin</artifactId><version>3.0.4</version>
</plugin> 

至此,所有的準(zhǔn)備工作已經(jīng)完成。

內(nèi)容加密

內(nèi)容加密有多種方式,這里挑選兩種方式進(jìn)行介紹。

方式一:?jiǎn)卧獪y(cè)試類生成密文;

構(gòu)建如下單元測(cè)試類,使用默認(rèn)實(shí)例化的StringEncryptor對(duì)密碼進(jìn)行加密:

@SpringBootTest
class SpringBootJasyptApplicationTests {
?@Autowiredprivate StringEncryptor stringEncryptor;
?@Testvoid contextLoads() {String qwerty1234 = stringEncryptor.encrypt("admin123");System.out.println(qwerty1234);}
} 

其中,”admin123“便是要加密的內(nèi)容。執(zhí)行上述程序,便可打印加密后的內(nèi)容。這種形式加密的內(nèi)容,全部采用默認(rèn)值。

方式二:通過(guò)Maven插件生成密文

在上面已經(jīng)引入了Jasypt的Maven插件,可通過(guò)對(duì)應(yīng)的命令進(jìn)行生成密碼。

第一步:在配置文件中添加加密的密碼:

jasypt.encryptor.password=afx11 

然后對(duì)配置文件中需要加密的數(shù)據(jù)進(jìn)行改造,在數(shù)據(jù)前添加”DEC(“,在數(shù)據(jù)尾部加上")",修改完如下:

conf.password=DEC(admin123) 

這里添加的DEC()是告訴插件,此部分內(nèi)容需要進(jìn)行加密處理。注意這里關(guān)鍵字是DEC。

第二步:執(zhí)行Maven命令,對(duì)上述數(shù)據(jù)進(jìn)行加密處理

在命令執(zhí)行以下命令:

mvn jasypt:encrypt -Djasypt.encryptor.password=afx11 

此時(shí)再看配置文件中的conf.password數(shù)據(jù)已經(jīng)變?yōu)椋?/p>

jasypt.encryptor.password=afx11
conf.url=127.0.0.1
conf.password=ENC(209eBdF3+jsV2f8kDjs4NOCzgBxnVgETlR5q2KfhYo5DW2jqvLknv0TndEkXOXm0) 

注意原來(lái)的DEC變成了ENC,原來(lái)的明文密碼變成了加密的密文。

此時(shí),如果想查看明文,執(zhí)行以下命令即可:

mvn jasypt:decrypt -Djasypt.encryptor.password=afx11 

該命令不會(huì)修改配置文件中的密文為明文,只會(huì)在控制臺(tái)進(jìn)行明文結(jié)果的輸出。

jasypt.encryptor.password=afx11
conf.url=127.0.0.1
conf.password=DEC(admin123) 

經(jīng)過(guò)上述操作,所有改造步驟已經(jīng)完成,只需啟動(dòng)系統(tǒng)進(jìn)行驗(yàn)證即可。

密碼的傳遞方式

完成上述步驟,直接啟動(dòng)系統(tǒng),訪問(wèn)對(duì)應(yīng)的請(qǐng)求,會(huì)發(fā)現(xiàn)已經(jīng)能夠成功打印出密碼原文了。

上述實(shí)例中我們將加密的密碼放在了application.properties文件中,這樣并不安全,如果查看代碼就知道如何解密了。通常,還可以采用另外一種形式來(lái)傳遞參數(shù):在啟動(dòng)命令中傳輸密碼。

比如:

 java -jar jasypt-spring-boot-demo-0.0.1-SNAPSHOT.jar --jasypt.encryptor.password=password 

這樣,密碼便不用存儲(chǔ)在代碼當(dāng)中了,一定程度上增加了安全性。當(dāng)然,也可以通過(guò)環(huán)境變量來(lái)進(jìn)行傳遞,這樣即便開(kāi)發(fā)人員也無(wú)法獲得生產(chǎn)的密碼。

到此這篇關(guān)于Spring Boot加密配置文件方法介紹的文章就介紹到這了,更多相關(guān)Spring Boot加密配置文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java程序設(shè)計(jì)之12個(gè)經(jīng)典樣例

    Java程序設(shè)計(jì)之12個(gè)經(jīng)典樣例

    這篇文章主要給大家分享關(guān)于Java程序設(shè)計(jì)11個(gè)經(jīng)典樣例,主要以舉例的形式詳細(xì)的講解了Java程序設(shè)計(jì)的各種方法,需要的朋友可以參考一下文章具體的內(nèi)容
    2021-10-10
  • 詳解Java-Jackson使用

    詳解Java-Jackson使用

    這篇文章主要介紹了Java-Jackson使用詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • Spring?Cloud?Alibaba?Nacos服務(wù)治理平臺(tái)服務(wù)注冊(cè)、RestTemplate實(shí)現(xiàn)微服務(wù)之間訪問(wèn)負(fù)載均衡訪問(wèn)的問(wèn)題

    Spring?Cloud?Alibaba?Nacos服務(wù)治理平臺(tái)服務(wù)注冊(cè)、RestTemplate實(shí)現(xiàn)微服務(wù)之間訪

    這篇文章主要介紹了Spring?Cloud?Alibaba:Nacos服務(wù)治理平臺(tái),服務(wù)注冊(cè)、RestTemplate實(shí)現(xiàn)微服務(wù)之間訪問(wèn),負(fù)載均衡訪問(wèn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • Android Studio更改項(xiàng)目使用的JDK(詳細(xì)步驟)

    Android Studio更改項(xiàng)目使用的JDK(詳細(xì)步驟)

    本文介紹了如何在Android Studio中修改Gradle和JDK的配置步驟,包括打開(kāi)設(shè)置、進(jìn)入Gradle設(shè)置、修改JDK路徑、保存并生效等,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • java如何獲取本機(jī)IP地址

    java如何獲取本機(jī)IP地址

    這篇文章主要為大家詳細(xì)介紹了java如何獲取本機(jī)IP地址,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • 深入解析Java的包(package)

    深入解析Java的包(package)

    這篇文章主要介紹了深入解析Java的包(package),是Java入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • 深入Java7的一些新特性以及對(duì)腳本語(yǔ)言支持API的介紹

    深入Java7的一些新特性以及對(duì)腳本語(yǔ)言支持API的介紹

    本篇文章是對(duì)Java7的一些新特性以及對(duì)腳本語(yǔ)言支持API的概述,需要的朋友參考下
    2013-05-05
  • Spring整合JUnit詳解

    Spring整合JUnit詳解

    Spring?是目前主流的?Java?Web?開(kāi)發(fā)框架,是?Java?世界最為成功的框架。該框架是一個(gè)輕量級(jí)的開(kāi)源框架,這篇文章主要介紹如何配置數(shù)據(jù)源、注解開(kāi)發(fā)以及整合Junit,感興趣的同學(xué)可以參考一下
    2023-04-04
  • 基于spring-boot-maven-plugin插件打包lib文件外置的方法(layout模式為ZIP模式)

    基于spring-boot-maven-plugin插件打包lib文件外置的方法(layout模式為ZIP模式)

    Maven是一個(gè)插件執(zhí)行框架,所有工作都由插件完成,同時(shí)?Maven?基于構(gòu)建生命周期的核心概念,明確定義了構(gòu)建和分發(fā)特定工件(項(xiàng)目)的過(guò)程,接下來(lái)通過(guò)本文給大家介紹下基于spring-boot-maven-plugin插件打包lib文件外置(layout模式為ZIP模式),需要的朋友可以參考下
    2022-09-09
  • SpringBoot整合Lombok插件與使用詳解

    SpringBoot整合Lombok插件與使用詳解

    Lombok是Java開(kāi)發(fā)的插件,通過(guò)注解自動(dòng)生成常用代碼,如getter/setter,節(jié)省開(kāi)發(fā)時(shí)間,提高效率,它在編譯期生成方法,不影響性能,安裝Lombok需要添加Maven依賴和IDEA插件,使用注解如@Data、@Getter等簡(jiǎn)化代碼編寫(xiě),官網(wǎng)提供詳細(xì)文檔
    2024-09-09

最新評(píng)論

青川县| 呼图壁县| 沙湾县| 定日县| 汕头市| 府谷县| 沭阳县| 五大连池市| 溧水县| 包头市| 宜兰县| 合水县| 阿坝| 宁河县| 大化| 上林县| 上林县| 镇赉县| 澄城县| 黔东| 营山县| 阳原县| 连州市| 古田县| 通渭县| 乌拉特中旗| 雅江县| 隆德县| 静安区| 奉新县| 顺平县| 固阳县| 乐东| 吴江市| 灌云县| 潜江市| 黎川县| 林甸县| 无锡市| 西宁市| 西昌市|