日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

springboot整合jasypt加密yml配置文件

作者:Java Abe 更新時間: 2022-07-12 編程語言

一、前言

通常項目配置文件中的賬號信息如下,都是直接暴露出來的,如果源碼不小心泄露將會引起一系列安全問題

二、解決

  1. 通過配置中心動態加載配置文件

  2. 通過jasypt加密組件進行加密/解密

三、實現

1、pom.xml中引入依賴

<!-- jasypt加密組件: https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

2、application.yml中配置加密密鑰

# 配置加密密鑰
jasypt:
  encryptor:
    password: zhong         # 這里密鑰修改 隨意

3、jasypt加密/解密測試類

public class JasyptTest {
    @Test
    public void test() {
        // 對應配置文件中配置的加密密鑰
        System.setProperty("jasypt.encryptor.password", "zhong");
        StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
        System.out.println("加密: " + stringEncryptor.encrypt("root"));
        System.out.println("解密: " + stringEncryptor.decrypt("上面加密的字符串"));
    }
}

4、修改yml配置文件賬號信息為加密方式

spring:
    application:
        name: scheduled
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        name: defaultDataSource
        password: ENC(uBxFfL0wQd9sL9CLV1zZbg==)
        url: jdbc:mysql://127.0.0.1:3306/aj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: ENC(BkmP68GGfNiTdQfZRXwoqA==)
jasypt:
    encryptor:
        password: zhong

四、擴展知識

自定義加密標識

jasypt默認使用ENC()來標識加密,加載配置的時候檢測到ENC()即會自動解密

下面我們來嘗試自定義一個加密標識,JAVA_ABE()

application.yml中新增如下配置:

jasypt:
  encryptor:
    property:
      prefix: JAVA_ABE(    # 加密前綴
      suffix: )                      # 加密后綴
    password: zhong        # 加密密鑰

修改配置如下:

spring:
    application:
        name: scheduled
    datasource:
        driver-class-name: com.mysql.cj.jdbc.Driver
        name: defaultDataSource
        password: JAVA_ABE(uBxFfL0wQd9sL9CLV1zZbg==)
        url: jdbc:mysql://127.0.0.1:3306/aj?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: JAVA_ABE(BkmP68GGfNiTdQfZRXwoqA==)
jasypt:
    encryptor:
        password: zhong

讓加密更安全

雖然經過上文的加密,涉及信息安全的配置項肯定會變得更安全,這個是毫無疑問的!

但是假如配置文件里的自定義加密密鑰jasypt.encryptor.password=zhong泄露了,那我們的加密字段也還是有可能被別人解密(畢竟還是寫在了配置文件中),為此,有幾項工作可以讓加密變得更加安全。

方式一:直接作為程序啟動時的命令行參數來帶入

java -jar scheduled.jar --jasypt.encryptor.password=zhong

方式二:直接作為程序啟動時的應用環境變量來帶入

java -Djasypt.encryptor.password=zhong -jar scheduled.jar

方式三:甚至可以作為系統環境變量的方式來帶入

jasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD:}

這樣就安全多了

原文鏈接:https://blog.csdn.net/m0_61157117/article/details/125715621

欄目分類
最近更新