AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

SpringCloud敏感信息配置揭秘,教你防止信息泄露!

來源: 責編: 時間:2023-11-02 17:14:11 328觀看
導讀環境:SpringBoot2.7.12 + SpringCloud2021.0.7 + JDK171. 簡介在Spring Boot中,配置文件通常包含了應用程序的敏感信息,例如數據庫密碼、API密鑰、加密密鑰等。如果這些敏感信息未經過加密處理,一旦配置文件被泄露或被不

環境:SpringBoot2.7.12 + SpringCloud2021.0.7 + JDK17zMU28資訊網——每日最新資訊28at.com

1. 簡介

在Spring Boot中,配置文件通常包含了應用程序的敏感信息,例如數據庫密碼、API密鑰、加密密鑰等。如果這些敏感信息未經過加密處理,一旦配置文件被泄露或被不當訪問,可能會導致安全風險和潛在的惡意行為。因此,對Spring Boot配置文件中的敏感信息進行加密處理是非常必要的。zMU28資訊網——每日最新資訊28at.com

敏感信息加密的目的是保護數據的安全性和完整性,防止未經授權的訪問和泄露。通過加密敏感信息,可以確保只有經過授權的用戶或系統可以解密和訪問這些信息。即使配置文件被泄露,攻擊者也無法輕易地獲取敏感信息的真實內容,從而降低了安全風險。zMU28資訊網——每日最新資訊28at.com

目前在項目中用的比較多的應該是Jasypt,Jasypt是一個Java加密工具包,它簡化了對密碼的哈希加密、對文本和二進制數據的對稱加解密等任務。在Spring Boot中,Jasypt可以用來對配置文件中的密鑰進行加密存儲,它支持基于標準的高安全性加密技術,適用于單向和雙向加密。zMU28資訊網——每日最新資訊28at.com

本篇我們不會去介紹Jasypt如何使用。如果你的項目中已經使用到了SpringCloud那么SpringCloud已經為我們提供了配置文件內容加解密的處理方法;即時你的項目中沒有用到,我們也只需要引入核心包即可使用它的這塊功能。接下來將以實例一步一步的交你如何使用。zMU28資訊網——每日最新資訊28at.com

2. 加解密配置

  • 引入依賴
<properties>  <java.version>17</java.version>  <spring-cloud.version>2021.0.7</spring-cloud.version></properties><dependencies>  <dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-context</artifactId>    <version>${spring-cloud.version}</version>  </dependency></dependencies>
  • 配置密鑰信息
spring:  cloud:    bootstrap:      enabled: false # 這里必須是false,默認是false。---#加密配置encrypt:  #密鑰  key: aaaabbbbccccdddd  #加密處理時的加鹽信息  salt: dead
  • 加密敏感信息
// 通過如下方式將我們需要加密的內容進行加密,如:123123!@ 。進行加密處理TextEncryptor textEncryptor = new EncryptorFactory("dead").create("aaaabbbbccccdddd") ;System.out.println(textEncryptor.encrypt("123123!@")) ;
  • 配置文件中配置加密內容
db:  password: '{cipher}6c05a3e62aa1f71b814fd283fc15197ec18a83b67d9da27dcb63c1b3925d68c1'

注意:這里的前綴必須是:{cipher}zMU28資訊網——每日最新資訊28at.com

通過以上的配置,我們的配置也是完全可以正常工作的,測試如下:zMU28資訊網——每日最新資訊28at.com

public class SpringCloudComprehensiveApplication implements ApplicationRunner{  @Value("${db.password}")  private String pwd ;  public static void main(String[] args) {    SpringApplication.run(SpringCloudComprehensiveApplication.class, args);  }  @Override  public void run(ApplicationArguments args) throws Exception {    System.out.println(pwd) ;  }}

輸出結果:zMU28資訊網——每日最新資訊28at.com

123123!@

正確的輸出了結果。zMU28資訊網——每日最新資訊28at.com

到此配置文件敏感信息加密就完成了。但是發現我們非常重要的密鑰信息還是存在配置文件中,這樣還是和沒加密一樣啊,還是暴露了。我們可以通過命令行的方式來設置密鑰信息。zMU28資訊網——每日最新資訊28at.com

  1. 從配置文件中刪除配置的encrypt.key和encrypt.salt兩個配置。
  2. 啟動項目時指定命令行參數,如下:
java -jar xxx.jar --encrypt.key=aaaabbbbccccdddd --encrypt.salt=dead

通過這樣設置,我們的程序也將正常的運行。其實命令行參數在程序運行過程中會自動的將這些信息添加到Environment中。zMU28資訊網——每日最新資訊28at.com

3. 實現原理zMU28資訊網——每日最新資訊28at.com

spring cloud context中提供了下面一個配置類,該配置類配置了一個ApplicationInitializer應用程序初始化類,也就是ApplicationContext容器初始化前執行的(Environment準備完之后)。zMU28資訊網——每日最新資訊28at.com

注意:這里是當我們項目中使用了配置中心,如使用了nacos的配置中心時
zMU28資訊網——每日最新資訊28at.com

public class EncryptionBootstrapConfiguration {  @Bean  public EnvironmentDecryptApplicationInitializer environmentDecryptApplicationListener(      ConfigurableApplicationContext context, KeyProperties keyProperties) {    TextEncryptor encryptor;    try {      // 我們完全可以自定義一個TextEncryptor類型的Bean,自己來實現加解密邏輯      encryptor = context.getBean(TextEncryptor.class);    }    EnvironmentDecryptApplicationInitializer listener = new EnvironmentDecryptApplicationInitializer(encryptor);    return listener;  }}

EnvironmentDecryptApplicationInitializer 類會解密我們的配置信息zMU28資訊網——每日最新資訊28at.com

public class EnvironmentDecryptApplicationInitializer {  private TextEncryptor encryptor;  public EnvironmentDecryptApplicationInitializer(TextEncryptor encryptor) {    this.encryptor = encryptor;  }  public void initialize(ConfigurableApplicationContext applicationContext) {     MutablePropertySources propertySources = environment.getPropertySources();    // ...    // 解密配置文件    Map<String, Object> map = decrypt(this.encryptor, propertySources);  }}

當我們項目中沒有啟用配置中心時,使用的是另外一個EnvironmentPostProcessor。zMU28資訊網——每日最新資訊28at.com

public class DecryptEnvironmentPostProcessor extends AbstractEnvironmentDecrypt    implements EnvironmentPostProcessor, Ordered {  public void postProcessEnvironment(ConfigurableEnvironment environment, SpringApplication application) {    // 如果啟用了,則該處理器不會生效。    if (bootstrapEnabled(environment) || useLegacyProcessing(environment) || !isEnabled(environment)) {      return;    }    MutablePropertySources propertySources = environment.getPropertySources();    // 解密配置文件    Map<String, Object> map = TextEncryptorUtils.decrypt(this, environment, propertySources);  }}

了解了上面的源碼實現,其實我們自己也可以借鑒它的實現方式來實現自己的配置文件處理。zMU28資訊網——每日最新資訊28at.com

注:配置文件的加解密也是支持RSA這種非對稱算法的,有興趣可以了解下,也是非常的簡單。
zMU28資訊網——每日最新資訊28at.com

完畢!!!zMU28資訊網——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-16644-0.htmlSpringCloud敏感信息配置揭秘,教你防止信息泄露!

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Docker Compose編排多個容器

下一篇: 哥,我還是不懂 ThreadLocal

標簽:
  • 熱門焦點
Top