精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

太強了!Spring Boot 配置參數名可控、值加密可查,全鏈路守護配置安全

開發 前端
不少企業上線前對配置文件有嚴格審查規則:禁止出現?username、password?等敏感字段名,更不能出現明文密碼。

不少企業上線前對配置文件有嚴格審查規則:禁止出現 usernamepassword 等敏感字段名,更不能出現明文密碼。這種規則雖然出發點是安全,但卻給開發帶來了不少困擾:

  • 字段名被屏蔽,程序無法讀取
  • 值不能加密,容易泄漏
  • 改配置影響啟動,難以排查

如何兼顧審查要求、代碼規范與安全性?本文提供一種優雅高效的解決方案:

自定義字段名 + 值使用國密 SM4 加密 + 啟動監聽器解密還原

 項目結構

/src
 └── main
     ├── java
     │    └── com
     │         └── icoderoad
     │              ├── listener            # 啟動解密監聽器
     │              ├── utils               # 加解密工具(SM4)
     │              └── Application.java    # 主啟動類
     └── resources
          └── application.properties        # 自定義字段 + 加密值

示例配置(字段脫敏 + SM4 加密值)

原始配置(上線不允許)

spring.datasource.url=jdbc:mysql://localhost:3306/study2
spring.datasource.username=root
spring.datasource.password=root

安全配置(字段名脫敏 + 值加密)

spring.datasource.dbu=lUMr5GMPQUghyqRZpH8U3rfWcWoOFl2F1lmuX9u2tNc=
spring.datasource.usr=gAvu3DuUOecT43AjtA1Rmw==
spring.datasource.pwd=gAvu3DuUOecT43AjtA1Rmw==

解密后示例值

  • URL:jdbc:mysql://localhost:3306/study2
  • 用戶名/密碼:root

上述密文通過 SM4 加密生成(工具類示例見下方)

SM4 加解密工具類(國密算法)

國密算法采用 BouncyCastle 實現,確保兼容性與安全性。

引入依賴(Maven)

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.70</version>
</dependency>

工具類實現

// com/icoderoad/utils/Sm4Util.java
package com.icoderoad.utils;


import org.bouncycastle.crypto.CryptoException;
import org.bouncycastle.crypto.engines.SM4Engine;
import org.bouncycastle.crypto.modes.ECBBlockCipher;
import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher;
import org.bouncycastle.crypto.paddings.PKCS7Padding;
import org.bouncycastle.crypto.params.KeyParameter;


import java.nio.charset.StandardCharsets;
import java.util.Base64;


public class Sm4Util {


    private static final String DEFAULT_KEY = "1234567890abcdef"; // 16字節國密Key


    public static String encrypt(String plainText) throws Exception {
        return encrypt(plainText, DEFAULT_KEY);
    }


    public static String decrypt(String cipherText) throws Exception {
        return decrypt(cipherText, DEFAULT_KEY);
    }


    public static String encrypt(String plainText, String key) throws Exception {
        PaddedBufferedBlockCipher cipher = createCipher(true, key.getBytes(StandardCharsets.UTF_8));
        byte[] input = plainText.getBytes(StandardCharsets.UTF_8);
        byte[] output = new byte[cipher.getOutputSize(input.length)];
        int len = cipher.processBytes(input, 0, input.length, output, 0);
        len += cipher.doFinal(output, len);
        byte[] encrypted = new byte[len];
        System.arraycopy(output, 0, encrypted, 0, len);
        return Base64.getEncoder().encodeToString(encrypted);
    }


    public static String decrypt(String base64Cipher, String key) throws Exception {
        byte[] input = Base64.getDecoder().decode(base64Cipher);
        PaddedBufferedBlockCipher cipher = createCipher(false, key.getBytes(StandardCharsets.UTF_8));
        byte[] output = new byte[cipher.getOutputSize(input.length)];
        int len = cipher.processBytes(input, 0, input.length, output, 0);
        len += cipher.doFinal(output, len);
        byte[] decrypted = new byte[len];
        System.arraycopy(output, 0, decrypted, 0, len);
        return new String(decrypted, StandardCharsets.UTF_8);
    }


    private static PaddedBufferedBlockCipher createCipher(boolean forEncryption, byte[] key) {
        SM4Engine engine = new SM4Engine();
        PaddedBufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new ECBBlockCipher(engine), new PKCS7Padding());
        cipher.init(forEncryption, new KeyParameter(key));
        return cipher;
    }


    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/study2";
        String encryptedUrl = encrypt(url);
        System.out.println("Encrypted URL: " + encryptedUrl);
        System.out.println("Decrypted: " + decrypt(encryptedUrl));


        String user = "root";
        System.out.println("Encrypted user: " + encrypt(user));
    }
}

啟動監聽器還原明文配置項

// com/icoderoad/listener/EnvironmentDecryptListener.java
package com.icoderoad.listener;


import com.icoderoad.utils.Sm4Util;
import org.springframework.boot.context.event.ApplicationEnvironmentPreparedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.core.env.ConfigurableEnvironment;


public class EnvironmentDecryptListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {


    @Override
    public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
        ConfigurableEnvironment env = event.getEnvironment();
        try {
            String url = env.getProperty("spring.datasource.dbu");
            String usr = env.getProperty("spring.datasource.usr");
            String pwd = env.getProperty("spring.datasource.pwd");


            System.setProperty("spring.datasource.url", Sm4Util.decrypt(url));
            System.setProperty("spring.datasource.username", Sm4Util.decrypt(usr));
            System.setProperty("spring.datasource.password", Sm4Util.decrypt(pwd));
        } catch (Exception e) {
            System.err.println("配置解密失敗: " + e.getMessage());
        }
    }
}

啟動類注冊監聽器

// com/icoderoad/Application.java
package com.icoderoad;


import com.icoderoad.listener.EnvironmentDecryptListener;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;


@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        new SpringApplicationBuilder(Application.class)
                .listeners(new EnvironmentDecryptListener())
                .run(args);
    }
}

結語:一站式配置安全守護方案

通過以上實戰方案,我們實現了配置安全的三重防護:

  1. 字段名自定義:繞過審查敏感關鍵字
  2. 值加密保護:使用國密 SM4 算法替代常見 AES,更符合監管要求
  3. 啟動自動還原:無侵入式接入 Spring Boot 項目

此方案不僅適用于數據源連接,還可擴展用于 Redis、MQ、API Token 等敏感配置項的保護。

建議將加密工具提取為開發工具類,加密后再錄入配置文件,運行階段解密即可,無需人工干預。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2025-03-26 08:28:36

2025-01-13 13:47:13

2025-08-07 09:30:57

2025-05-14 01:00:00

Spring工具工廠類

2025-01-22 14:02:35

2025-11-03 06:25:26

SpringJSONJackson

2025-04-10 00:25:00

Spring@JsonView注解

2022-06-06 12:18:44

配置可視化Nginx

2024-12-16 13:34:35

2025-09-01 02:00:00

2025-03-04 08:53:10

2022-05-30 16:31:08

CSS

2025-02-08 08:00:00

JavaDeepSeekIDEA

2025-04-08 01:00:00

Spring開發系統

2025-04-02 04:55:00

2023-01-30 22:34:44

Node.js前端

2021-03-04 09:31:42

開源技術 項目

2025-04-29 07:44:26

配置校驗機制

2024-01-05 00:29:36

全鏈路灰度發布云原生

2018-05-30 15:10:24

Spring BootList類型
點贊
收藏

51CTO技術棧公眾號

国产精品一区三区| 欧美a级片视频| 精品国产乱码久久久久久虫虫漫画| 国产精品美女黄网| 高潮毛片又色又爽免费 | 久久一区激情| 久久精视频免费在线久久完整在线看 | 国产精品亚洲综合| 中文字幕av第一页| 欧美日韩网址| 中文在线资源观看视频网站免费不卡 | 国产夫妻在线播放| 欧美极品aⅴ影院| 国产精品国产三级国产专区53| 黄色网址中文字幕| 国内精品福利| 色噜噜久久综合伊人一本| xxxx国产视频| 国模私拍国内精品国内av| 亚洲午夜精品网| 一区二区三区国产福利| 少妇喷水在线观看| 国产美女一区二区| 国产精品美乳一区二区免费| 国产在线观看免费视频今夜| 欧美黄色录像片| 亚洲欧洲日产国产网站| 91成人在线观看喷潮蘑菇| 91福利精品在线观看| 亚洲成人黄色影院| 天堂а√在线中文在线| 亚洲欧美视频一区二区| 91首页免费视频| 99在线视频首页| 国产精品欧美激情在线| 日韩电影在线看| 欧美在线观看日本一区| 国产精品成人久久| 亚洲一级毛片| xxxxxxxxx欧美| 香蕉视频久久久| 亚洲精品中文字幕99999| 欧美成人高清电影在线| www激情五月| 亚洲精品777| 欧美日韩免费不卡视频一区二区三区| 成人午夜视频免费在线观看| 黄色在线免费观看网站| 亚洲高清免费观看| 久久99久久久久久| 青青草原av在线| 一卡二卡欧美日韩| 真实国产乱子伦对白视频| 黄色片网站在线观看| 国产精品女人毛片| 亚洲免费久久| 伊人免费在线| 亚洲人午夜精品天堂一二香蕉| 亚洲精品成人a8198a| yiren22综合网成人| 国产午夜亚洲精品午夜鲁丝片| 国新精品乱码一区二区三区18| 韩国av在线免费观看| 成人激情av网| 久久久国产精品一区二区三区| 手机在线观看免费av| 97久久精品人人爽人人爽蜜臀| 精品伦精品一区二区三区视频| 五月激情丁香婷婷| 久久影院午夜片一区| 蜜桃久久精品乱码一区二区 | www.亚洲一区| 无码人妻精品一区二区三区夜夜嗨| 午夜精品视频一区二区三区在线看| 美女视频久久黄| 亚洲一区 视频| 亚洲欧美日韩专区| 国产精品久久久久秋霞鲁丝| 国产偷人妻精品一区二区在线| 懂色av一区二区在线播放| 久久精品人成| 91青青在线视频| 亚洲欧美精品午睡沙发| 夜夜添无码一区二区三区| 综合久久2023| 在线播放欧美女士性生活| 苍井空张开腿实干12次| 日本在线中文字幕一区| 伊人久久男人天堂| 亚洲一级生活片| 一本久久综合| 国产色婷婷国产综合在线理论片a| 99热在线只有精品| 99久久婷婷国产综合精品电影| 日韩中文一区| 黄色小说在线播放| 91国在线观看| 人妻 日韩 欧美 综合 制服| 国产a久久精品一区二区三区| 精品激情国产视频| 在线观看国产亚洲| 韩日欧美一区二区三区| 蜜桃av噜噜一区二区三区| 超碰在线caoporen| 色综合久久久网| av不卡中文字幕| 日韩精品看片| 欧美在线免费视频| 国内精品久久久久久久久久久| 久久精品一区四区| 99热这里只有精品免费| 深夜视频一区二区| 欧美精品一区二区三区在线 | 久久视频在线| 欧美亚洲另类激情另类| av中文字幕免费| 国产欧美视频一区二区| 免费不卡av在线| 91视频亚洲| 亚洲图片在区色| 激情五月色婷婷| 国产精品一区二区x88av| 日韩美女一区| 成人妖精视频yjsp地址| 久久6精品影院| 久久精品国产亚洲av麻豆蜜芽| 国产成人在线观看免费网站| 视频一区视频二区视频三区视频四区国产| 丝袜在线视频| 欧美人与性动xxxx| a级片在线观看| 国产日韩亚洲| 国产伦精品一区二区三区视频孕妇 | 无码人妻精品一区二区蜜桃百度 | 91久久国产综合久久91精品网站| 男生女生差差差的视频在线观看| 亚洲成av人片一区二区| 成人啪啪18免费游戏链接| 亚洲经典一区| 91亚洲一区精品| 日本蜜桃在线观看| 欧美日韩亚洲另类| av电影网站在线观看| 久久精品日产第一区二区| 国产亚洲精品久久飘花| av老司机免费在线| 亚洲成人久久网| av资源吧首页| 99久久精品国产麻豆演员表| 999久久欧美人妻一区二区| 二区三区精品| 欧美成人精品xxx| www精品国产| 亚洲一区二区三区四区的| 日本泡妞xxxx免费视频软件| 欧美日韩国产高清| 粉嫩精品一区二区三区在线观看| 四虎影视国产在线视频| 日韩欧美精品三级| 国产一级在线播放| yourporn久久国产精品| 欧美污视频网站| 国产一区二区三区探花| 国产精品揄拍500视频| 99视频在线观看地址| 欧美日韩国产综合一区二区三区| 四虎影视一区二区| 国产精品亚洲а∨天堂免在线| 2022中文字幕| 国产精品18hdxxxⅹ在线| 91成人免费观看网站| 免费在线视频你懂得| 欧美三级中文字幕在线观看| 国产精品精品软件男同| 国产99精品国产| 97av视频在线观看| 色综合久久一区二区三区| 69堂成人精品视频免费| 91豆花视频在线播放| 亚洲欧美精品伊人久久| 一区二区久久精品66国产精品 | 亚洲最大在线视频| 一区二区日韩在线观看| 亚洲国产中文字幕在线视频综合| 香蕉视频黄色在线观看| 美国av一区二区| 黄色a级片免费看| 欧美女优在线视频| 91精品在线播放| 老司机深夜福利在线观看| 伊人久久久久久久久久| www精品国产| 欧美主播一区二区三区| 久久精品一级片| 国产欧美视频在线观看| 2018国产精品| 日本vs亚洲vs韩国一区三区| 国产精品videossex国产高清| 国产午夜一区| 成人黄动漫网站免费| 亚洲精品国产嫩草在线观看| 久久97精品久久久久久久不卡| 久草福利在线| 精品国产乱子伦一区| 欧美成人精品网站| 亚洲国产欧美一区二区三区丁香婷| 级毛片内射视频| 不卡视频一二三| 精品综合久久久久| 午夜在线播放视频欧美| mm131午夜| 欧美久久综合网| 国产精品成人观看视频免费| 成人交换视频| 欧美激情小视频| 免费黄色在线网站| 亚洲香蕉伊综合在人在线视看| 黄色aaa毛片| 91精品国产综合久久久蜜臀图片| 无码人妻精品一区二区蜜桃色欲| 亚洲一二三四区不卡| 熟女少妇a性色生活片毛片| 久久你懂得1024| 完美搭档在线观看| 国产精品123| 五月天视频在线观看| 久久精品亚洲| 国产在线精品91| 在线观看视频免费一区二区三区| 亚洲精品偷拍视频| 激情五月综合网| 免费99视频| 欧美调教在线| 久久国产精品久久精品国产| 久久91在线| 国内不卡一区二区三区| 国产精品18hdxxxⅹ在线| 97久草视频| 秋霞影院一区| www.成人av| 亚洲精品视频一二三区| 51精品国产人成在线观看| 精品欧美视频| av资源站久久亚洲| 一区二区三区四区视频免费观看 | 天天操天天操天天操| 日韩精品一区二区三区视频 | 国产 日韩 欧美 在线| 亚洲成人自拍一区| 国产精品7777777| 欧美视频裸体精品| 在线视频一区二区三区四区| 色哟哟欧美精品| 亚洲av人无码激艳猛片服务器| 欧美色倩网站大全免费| 亚洲性在线观看| 3d成人动漫网站| 国产高清视频免费观看| 精品国产污污免费网站入口| 人妻丰满熟妇av无码区hd| 亚洲精品理论电影| 男女视频在线观看免费| 中文字幕精品网| 黄色片网站在线| 欧美激情久久久久| 美女网站在线看| 国产成人精品久久二区二区91 | 99蜜桃在线观看免费视频网站| 亚洲视频一起| 久草精品电影| 欧美精品色图| 青少年xxxxx性开放hg| 好看不卡的中文字幕| 国产深夜男女无套内射| 蜜臀av一区二区| 日本天堂在线播放| 久久精品欧美一区二区三区不卡| 国精产品视频一二二区| 亚洲一级不卡视频| 国产又粗又猛又爽又| 日韩一区二区在线播放| 日韩一区av| 久久久精品2019中文字幕神马| 久色国产在线| 国产精品丝袜久久久久久高清| 亚洲视频一起| 日韩欧美在线电影| 欧美亚洲不卡| 九九热在线免费| 成人h动漫精品| 一级在线观看视频| 亚洲观看高清完整版在线观看| 伊人久久中文字幕| 欧美不卡一区二区三区四区| 高清在线观看av| 久久久久久免费精品| 日本国产欧美| 精品国产乱码久久久久软件| 久久免费大视频| 成年人黄色片视频| 成人免费视频免费观看| 性少妇xx生活| 日韩欧美黄色动漫| 亚洲精品久久久蜜桃动漫| 亚洲一区二区久久| 国产在线观看www| 51成人做爰www免费看网站| 欧美视频网址| 999一区二区三区| 国内精品免费在线观看| 强伦人妻一区二区三区| 亚洲一区二区在线免费观看视频| 天干夜夜爽爽日日日日| 精品国产污污免费网站入口| 天天插天天干天天操| 久久99亚洲精品| 日韩av超清在线观看| 久久精品日产第一区二区三区| 亚洲成av人电影| 亚洲欧美偷拍另类| 91毛片在线观看| 五月天婷婷丁香网| 欧美性xxxx在线播放| 性色av蜜臀av| 不卡毛片在线看| 免费成人美女女| 成人免费视频网站| 欧美在线免费| 一级片视频免费观看| 国产欧美日韩综合| 久久草视频在线| 日韩欧美在线123| 免费在线观看黄色网| 欧洲午夜精品久久久| 群体交乱之放荡娇妻一区二区| 国产成人三级视频| 久久99精品久久久久| 永久免费av无码网站性色av| 婷婷激情综合网| 手机看片福利永久| 欧美极品美女视频网站在线观看免费| 日本少妇精品亚洲第一区| 日韩亚洲欧美精品| 国产精品日韩| 日本少妇高潮喷水xxxxxxx| 五月综合激情婷婷六月色窝| 亚洲av电影一区| 国模视频一区二区三区| 一区视频网站| 2019日韩中文字幕mv| 国产在线视频一区二区| 欧美成欧美va| 日韩一区二区不卡| av免费观看一区二区| 国产视频观看一区| 成人亚洲一区二区| 亚洲制服中文字幕| 亚洲欧美中日韩| 精品乱码一区内射人妻无码| 精品五月天久久| 中文不卡1区2区3区| 日韩精品电影网站| 日韩 欧美一区二区三区| 永久av免费网站| 日韩欧美一级在线播放| av小次郎在线| 国产综合 伊人色| 亚洲欧美清纯在线制服| 国产综合精品在线| 欧美视频在线一区| 羞羞的视频在线观看| 99在线视频播放| 国自产拍偷拍福利精品免费一| 亚洲狠狠婷婷综合久久久久图片| 黑人精品xxx一区一二区| 欧美性天天影视| 91香蕉国产在线观看| 国产午夜精品一区二区三区欧美| 9.1成人看片| 91久久精品网| 午夜av在线免费观看| 久久精品aaaaaa毛片| 蜜乳av一区二区| avtt天堂在线| 亚洲男人第一网站| 国产成人a视频高清在线观看| 国产爆乳无码一区二区麻豆| 97精品久久久午夜一区二区三区| 最近免费中文字幕大全免费版视频| 久久成人综合视频| av毛片精品| 欧美精品久久久久久久久25p| 亚洲免费电影在线| 你懂的视频在线观看| 国产精品美乳在线观看| 欧美日韩亚洲一区二区三区在线| 免费在线观看你懂的| 欧美一级日韩免费不卡| 热色播在线视频| 国产麻豆电影在线观看|