<noframes id="bhrfl"><address id="bhrfl"></address>

    <address id="bhrfl"></address>

    <noframes id="bhrfl"><address id="bhrfl"><th id="bhrfl"></th></address>

    <form id="bhrfl"><th id="bhrfl"><progress id="bhrfl"></progress></th></form>

    <em id="bhrfl"><span id="bhrfl"></span></em>

    全部
    常見問題
    產品動態
    精選推薦

    Spring Boot 2.x基礎教程:加密配置中的敏感信息

    管理 管理 編輯 刪除

    關于Spring Boot配置文件中的各種細節用法有很多,比如:參數間的引用open in new window、隨機數的應用open in new window等等。這些配置相關的知識都是Spring Boot原生就提供的,而今天我們將介紹的功能并非Spring Boot原生就支持,但卻非常有用:配置內容的加密

    為什么要加密?

    可能很多初學者,對于配置信息的加密并不敏感,因為開始主要接觸本地的開發,對于很多安全問題并沒有太多的考慮。而現實中,我們的配置文件中,其實包含著大量與安全相關的敏感信息,比如:數據庫的賬號密碼、一些服務的密鑰等。這些信息一旦泄露,對于企業的重要數據資產,那是相當危險的。 所以,對于這些配置文件中存在的敏感信息進行加密,是每個成熟開發團隊都一定會去的事。

    所以今天我們就主要來說說,當我們只使用Spring Boot的時候,如何實現對配置中敏感信息的加密。

    動手試試

    下面我們將使用https://github.com/ulisesbocchio/jasypt-spring-boot這個開源項目提供的實現和插件,來幫助我們輕松的完成配置信息的加密。

    趕緊跟著我下面的步驟動手試試吧!

    第一步:創建一個基礎的Spring Boot項目(如果您還不會,可以參考這篇文章:快速入門open in new window

    第二步:設計一個參數和單元測試,用來輸出這個配置信息

    準備加密的配置:

    datasource.password=didispace.com
    

    用來輸出配置信息的單元測試:

    @Slf4j
    @SpringBootTest
    public class PropertiesTest {
    
        @Value("${datasource.password:}")
        private String password;
    
        @Test
        public void test() {
            log.info("datasource.password : {}", password);
        }
    
    }
    

    執行這個單元測試,會輸出:

    2021-08-13 22:28:45.506  INFO 70405 --- [           main] com.didispace.chapter15.PropertiesTest   : datasource.password : didispace.com
    

    這里還沒開始加密,下面我們開始引入加密的操作!

    第三步:在pom.xml中引入jasypt提供的Spring Boot Starter

    
        com.github.ulisesbocchio
        jasypt-spring-boot-starter
        3.0.3
    
    

    在插件配置中加入:

    
        com.github.ulisesbocchio
        jasypt-maven-plugin
        3.0.3
    
    

    第四步:在配置文件中加入加密需要使用的密碼

    jasypt.encryptor.password=didispace
    

    同時,修改要加密的內容,用DEC()將待加密內容包裹起來,比如:

    datasource.password=DEC(didispace.com)
    

    第五步:使用jasypt-maven-plugin插件來給DEC()包裹的內容實現批量加密。

    在終端中執行下面的命令:

    mvn jasypt:encrypt -Djasypt.encryptor.password=didispace
    
    注意:這里-Djasypt.encryptor.password參數必須與配置文件中的一致,不然后面會解密失敗。

    執行之后,重新查看配置文件,可以看到,自動變成了

    datasource.password=ENC(/AL9nJENCYCh9Pfzdf2xLPsqOZ6HwNgQ3AnMybFAMeOM5GphZlOK6PxzozwtCm+Q)
    
    jasypt.encryptor.password=didispace
    

    其中,ENC()DEC()一樣都是jasypt提供的標識,分別用來標識括號內的是加密后的內容和待加密的內容。

    如果當前配置文件已經都是ENC()內容了,那么我們可以通過下面的命令來解密配置文件,查看原始信息:

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

    該操作不會修改配置文件,只會在控制臺輸出解密結果,比如:

    datasource.password=DEC(didispace.com)
    
    jasypt.encryptor.password=didispace
    

    第六步:此時,我們的配置文件中的敏感信息已經被ENC()修飾了,再執行一下單元測試,不出意外的話,依然可以得到之前一樣的結果:

    2021-08-13 22:50:00.463  INFO 76150 --- [           main] com.didispace.chapter15.PropertiesTest   : datasource.password : didispace.com
    

    而此時,配置文件中已經是加密內容了,敏感信息得到了保護。

    注意:如果在嘗試的時候,出現報錯:DecryptionException: Unable to decrypt,點擊本文查看可能的原因open in new window


    注:本文轉載自“程序猿DD”,如有侵權,請聯系刪除!

    請登錄后查看

    哈哈哈醬 最后編輯于2024-12-18 15:02:14

    快捷回復
    回復
    回復
    回復({{post_count}}) {{!is_user ? '我的回復' :'全部回復'}}
    排序 默認正序 回復倒序 點贊倒序

    {{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level }}

    作者 管理員 企業

    {{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推薦': '推薦'}}
    {{item.is_suggest == 1? '取消推薦': '推薦'}}
    沙發 板凳 地板 {{item.floor}}#
    {{item.user_info.title || '暫無簡介'}}
    附件

    {{itemf.name}}

    {{item.created_at}}  {{item.ip_address}}
    打賞
    已打賞¥{{item.reward_price}}
    {{item.like_count}}
    {{item.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復

    {{itemc.user_info.nickname}}

    {{itemc.user_name}}

    回復 {{itemc.comment_user_info.nickname}}

    附件

    {{itemf.name}}

    {{itemc.created_at}}
    打賞
    已打賞¥{{itemc.reward_price}}
    {{itemc.like_count}}
    {{itemc.showReply ? '取消回復' : '回復'}}
    刪除
    回復
    回復
    查看更多
    打賞
    已打賞¥{{reward_price}}
    1189
    {{like_count}}
    {{collect_count}}
    添加回復 ({{post_count}})

    相關推薦

    快速安全登錄

    使用微信掃碼登錄
    {{item.label}} 加精
    {{item.label}} {{item.label}} 板塊推薦 常見問題 產品動態 精選推薦 首頁頭條 首頁動態 首頁推薦
    取 消 確 定
    回復
    回復
    問題:
    問題自動獲取的帖子內容,不準確時需要手動修改. [獲取答案]
    答案:
    提交
    bug 需求 取 消 確 定
    打賞金額
    當前余額:¥{{rewardUserInfo.reward_price}}
    {{item.price}}元
    請輸入 0.1-{{reward_max_price}} 范圍內的數值
    打賞成功
    ¥{{price}}
    完成 確認打賞

    微信登錄/注冊

    切換手機號登錄

    {{ bind_phone ? '綁定手機' : '手機登錄'}}

    {{codeText}}
    切換微信登錄/注冊
    暫不綁定
    亚洲欧美字幕
    CRMEB客服

    CRMEB咨詢熱線 咨詢熱線

    400-8888-794

    微信掃碼咨詢

    CRMEB開源商城下載 源碼下載 CRMEB幫助文檔 幫助文檔
    返回頂部 返回頂部
    CRMEB客服