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

詳解如何保護(hù)SpringBoot配置文件中的敏感信息

 更新時(shí)間:2023年07月28日 09:26:39   作者:242030  
使用過(guò)SpringBoot配置文件的朋友都知道,資源文件中的內(nèi)容通常情況下是明文顯示,安全性就比較低一些,所以為了提高安全性,就需要對(duì)配置文件中的敏感信息進(jìn)行保護(hù),下面就為大家介紹一下實(shí)現(xiàn)方法吧

如何保護(hù)SpringBoot配置文件中的敏感信息

使用過(guò)SpringBoot配置文件的朋友都知道,資源文件中的內(nèi)容通常情況下是明文顯示,安全性就比較低一些。

打開(kāi)application.propertiesapplication.yml,比如 MySql登陸密碼,Redis登陸密碼以及第三方的密鑰

等等一覽無(wú)余,這里介紹一個(gè)加解密組件,提高一些屬性配置的安全性。

jasypt由一個(gè)國(guó)外大神寫(xiě)了一個(gè)springboot下的工具包,用來(lái)加密配置文件中的信息。

GitHub Demo地址:https://github.com/jeikerxiao/spring-boot2/tree/master/spring-boot-encrypt

下面以數(shù)據(jù)庫(kù)用戶名和數(shù)據(jù)庫(kù)密碼加密為例進(jìn)行介紹。

1、pom依賴

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.6</version>
        <relativePath/>
    </parent>
    <groupId>com.jasypt</groupId>
    <artifactId>spring-boot-jasypt</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>spring-boot-jasypt</name>
    <description>如何保護(hù) SpringBoot 配置文件中的敏感信息</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 加密包 -->
        <dependency>
            <groupId>com.github.ulisesbocchio</groupId>
            <artifactId>jasypt-spring-boot-starter</artifactId>
            <version>2.1.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

查看最新版本可以到:https://github.com/ulisesbocchio/jasypt-spring-boot

2、配置加/解的密碼

# jasypt加密的密匙
jasypt:
  encryptor:
    password: Y6M9fAJQdU7jNp5MW

3、測(cè)試用例中生成加密后的秘鑰

package com.jasypt;
import org.jasypt.encryption.StringEncryptor;
import org.junit.Assert;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
class SpringBootJasyptApplicationTests {
    @Autowired
    private StringEncryptor encryptor;
    @Test
    public void getPass() {
        String url = encryptor.encrypt("jdbc:mysql://127.0.0.1:3306/test");
        String name = encryptor.encrypt("root");
        String password = encryptor.encrypt("root");
        System.out.println("database url: " + url);
        System.out.println("database name: " + name);
        System.out.println("database password: " + password);
        Assert.assertTrue(url.length() > 0);
        Assert.assertTrue(name.length() > 0);
        Assert.assertTrue(password.length() > 0);
    }
}

下面是輸出加密字符串:

database url: CCGZpukXHOy7xPMVm6//IZi3kQxJQmZuFdrje1KtshlZD0IiwrHTQWcB4J4l1qKe
database name: +DcWhoH0RuZck93R2FSEEg==
database password: gTVoDqbBeaTe2+omIsoXIA==

4、將加密后的字符串替換原明文

server:
  port: 8080
spring:
  # 數(shù)據(jù)庫(kù)相關(guān)配置
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: CCGZpukXHOy7xPMVm6//IZi3kQxJQmZuFdrje1KtshlZD0IiwrHTQWcB4J4l1qKe
    username: +DcWhoH0RuZck93R2FSEEg==
    password: gTVoDqbBeaTe2+omIsoXIA==
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  # 返回的api接口的配置,全局有效
  jackson:
   # 如果某一個(gè)字段為null,就不再返回這個(gè)字段
    default-property-inclusion: non_null
    date-format: yyyy-MM-dd HH:mm:ss
    serialization:
      write-dates-as-timestamps: false
    time-zone: GMT+8
# jasypt加密的密匙
jasypt:
  encryptor:
    password: Y6M9fAJQdU7jNp5MW

5、部署時(shí)配置salt(鹽)值

為了防止salt(鹽)泄露,反解出密碼,可以在項(xiàng)目部署的時(shí)候使用命令傳入salt(鹽)值:

$ java -jar xxx.jar -Djasypt.encryptor.password=Y6M9fAJQdU7jNp5MW

或者在服務(wù)器的環(huán)境變量里配置,進(jìn)一步提高安全性。

打開(kāi)/etc/profile文件

$ vim /etc/profile

在profile文件末尾插入salt(鹽)變量

$ export JASYPT_PASSWORD = Y6M9fAJQdU7jNp5MW

編譯,使配置文件生效

$ source /etc/profile

運(yùn)行

$ java -jar -Djasypt.encryptor.password=${JASYPT_PASSWORD} xxx.jar

到此這篇關(guān)于詳解如何保護(hù)SpringBoot配置文件中的敏感信息的文章就介紹到這了,更多相關(guān)SpringBoot保護(hù)配置文件敏感信息內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot嵌入式Servlet容器與定制化組件超詳細(xì)講解

    SpringBoot嵌入式Servlet容器與定制化組件超詳細(xì)講解

    這篇文章主要介紹了SpringBoot嵌入式Servlet容器與定制化組件的使用介紹,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-10-10
  • Mybatis的特點(diǎn)及優(yōu)點(diǎn)

    Mybatis的特點(diǎn)及優(yōu)點(diǎn)

    Mybatis 本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis。mybatis有哪些特點(diǎn)和優(yōu)點(diǎn)呢?通過(guò)本文一起學(xué)習(xí)吧
    2016-12-12
  • 深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作

    深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作

    這篇文章主要介紹了深入解析反編譯字節(jié)碼文件中的代碼邏輯JVM中的String操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • JetBrains IntelliJ IDEA 優(yōu)化教超詳細(xì)程

    JetBrains IntelliJ IDEA 優(yōu)化教超詳細(xì)程

    這篇文章主要介紹了JetBrains IntelliJ IDEA 優(yōu)化教超詳細(xì)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 詳解Mybatis中的PooledDataSource

    詳解Mybatis中的PooledDataSource

    這篇文章主要介紹了詳解Mybatis中的PooledDataSource,PooledDataSource使用了數(shù)據(jù)庫(kù)連接池可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接池的重復(fù)利用,還能控制連接數(shù)據(jù)庫(kù)的連接上限
    2022-06-06
  • SpringBoot+RustFS 實(shí)現(xiàn)文件切片極速上傳的實(shí)例代碼

    SpringBoot+RustFS 實(shí)現(xiàn)文件切片極速上傳的實(shí)例代碼

    本文介紹利用SpringBoot和RustFS構(gòu)建高性能文件切片上傳系統(tǒng),實(shí)現(xiàn)大文件秒傳、斷點(diǎn)續(xù)傳和分片上傳等功能,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-09-09
  • 淺談MultipartFile中transferTo方法的坑

    淺談MultipartFile中transferTo方法的坑

    這篇文章主要介紹了MultipartFile中transferTo方法的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • maven私有鏡像倉(cāng)庫(kù)nexus部署使用

    maven私有鏡像倉(cāng)庫(kù)nexus部署使用

    Nexus在企業(yè)開(kāi)發(fā)中還是比較常用的私有倉(cāng)庫(kù)管理工具,本文主要介紹了maven私有鏡像倉(cāng)庫(kù)nexus部署使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • 全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

    全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理

    這篇文章主要介紹了全面解析SpringBoot自動(dòng)配置的實(shí)現(xiàn)原理的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Java字符處理之char、String、StringBuilder和StringBuffer詳解

    Java字符處理之char、String、StringBuilder和StringBuffer詳解

    這篇文章主要介紹了Java字符處理之char、String、StringBuilder和StringBuffer的相關(guān)資料,它們各自有著獨(dú)特的特性和適用場(chǎng)景,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-03-03

最新評(píng)論

高阳县| 交城县| 东平县| 永和县| 拉孜县| 长顺县| 阿荣旗| 汶川县| 清流县| 随州市| 房产| 阳江市| 繁峙县| 万宁市| 尼勒克县| 海伦市| 淅川县| 崇信县| 应用必备| 丹棱县| 洞口县| 叙永县| 哈密市| 科技| 阿拉尔市| 江西省| 广灵县| 关岭| 大兴区| 新津县| 临沂市| 龙游县| 山阴县| 定陶县| 建德市| 酉阳| 格尔木市| 高清| 永兴县| 榆树市| 三明市|