Spring Boot中如何對密碼等敏感信息進行脫敏處理

以下是常見的脫敏方法及實現步驟,涵蓋配置、日志和API響應等多個層面:


?1. 配置文件敏感信息脫敏?

(1) 使用加密庫(如Jasypt)

?步驟?:

  1. 添加依賴:

    <dependency><groupId>com.github.ulisesbocchio</groupId><artifactId>jasypt-spring-boot-starter</artifactId><version>3.0.5</version>
    </dependency>
  2. 加密密碼:

    BasicTextEncryptor encryptor = new BasicTextEncryptor();
    encryptor.setPassword("your-secret-key"); // 加密密鑰
    String encryptedPassword = encryptor.encrypt("your-real-password");
  3. 在配置文件中使用加密值(用ENC()包裹):

    spring:datasource:password: ENC(encryptedPassword)
  4. 啟動時指定密鑰:

    java -jar your-app.jar --jasypt.encryptor.password=your-secret-key

(2) 自定義屬性源(實現PropertySource
public class MaskedPropertySource extends PropertySource<Map<String, Object>> {public MaskedPropertySource(String name, Map<String, Object> source) {super(name, source);}@Overridepublic Object getProperty(String name) {Object value = source.get(name);if (name.contains("password") && value != null) {return "?**?*?**?*"; // 返回脫敏值}return value;}
}

?2. 日志脫敏?

(1) 使用Logback的replace功能

logback-spring.xml中配置脫敏規則:

<configuration><conversionRule conversionWord="maskedMsg" converterClass="com.example.MaskingPatternLayout"/><appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %maskedMsg%n</pattern></encoder></appender><root level="info"><appender-ref ref="CONSOLE" /></root>
</configuration>

自定義轉換器:

public class MaskingPatternLayout extends PatternLayout {@Overridepublic String doLayout(ILoggingEvent event) {String message = super.doLayout(event);return message.replaceAll("password\":\"(.*?)\"", "password\":\"?**?*?**?*\"");}
}

?3. API響應脫敏?

(1) 使用Jackson注解忽略敏感字段
public class UserDTO {private String username;@JsonIgnore // 完全忽略該字段private String password;@JsonProperty(access = Access.WRITE_ONLY) // 僅允許寫入,響應時不序列化private String secretKey;
}
(2) 自定義序列化器
public class PasswordSerializer extends JsonSerializer<String> {@Overridepublic void serialize(String value, JsonGenerator gen, SerializerProvider provider) throws IOException {gen.writeString("?**?*?**?*"); // 返回固定脫敏值}
}// 在DTO字段上指定序列化器
public class UserResponse {@JsonSerialize(using = PasswordSerializer.class)private String password;
}

?4. 其他注意事項?

  • ?環境變量?:優先使用環境變量傳遞敏感信息,而非明文配置文件:
    export SPRING_DATASOURCE_PASSWORD=your_password
  • ?安全存儲密鑰?:加密密鑰(如Jasypt的密鑰)應通過安全渠道(如KMS、Vault)管理,避免硬編碼。
  • ?代碼審查?:避免在代碼中硬編碼密碼,使用.gitignore排除敏感配置文件。

?總結?

通過配置文件加密(如Jasypt)、日志脫敏(Logback替換)和API響應控制(Jackson注解),可全方位保護敏感信息。建議結合多種方案,確保密碼在存儲、傳輸和展示時均處于脫敏狀態。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906756.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

springboot中redis的事務的研究

redis的事務類似于隊列操作&#xff0c;執行過程分為三步&#xff1a; 開啟事務入隊操作執行事務 使用到的幾個命令如下&#xff1a; 命令說明multi開啟一個事務exec事務提交discard事務回滾watch監聽key(s)&#xff1a;當監聽一個key(s)時&#xff0c;如果在本次事務提交之…

python打卡day35@浙大疏錦行

知識點回顧&#xff1a; 三種不同的模型可視化方法&#xff1a;推薦torchinfo打印summary權重分布可視化進度條功能&#xff1a;手動和自動寫法&#xff0c;讓打印結果更加美觀推理的寫法&#xff1a;評估模式 作業&#xff1a;調整模型定義時的超參數&#xff0c;對比下效果。…

Python爬蟲實戰:研究Crawley 框架相關技術

1. Crawley 框架相關定義 1.1 網絡爬蟲定義 網絡爬蟲是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。它通過 HTTP 協議與 Web 服務器進行交互,獲取網頁內容并進行解析處理,是數據采集和信息檢索的重要工具。 1.2 Crawley 框架定義 Crawley 是一個基于 Pytho…

tvalid寄存器的理解

if(!out_axis_tvalid_reg || m_axis_tready ) beginend m_axis_tready 是上拍下一級給的ready信號 out_axis_tvalid_reg是上一拍&#xff0c;本級給下級的valid信號 一共有四種組合&#xff0c;然后可以通過這個if語句&#xff0c;在接下來的begin ... end中&#xff0c;用來…

【AI實戰】從“苦AI”到“爽AI”:Magentic-UI 把“人類-多智能體協作”玩明白了!

Hello&#xff0c;親愛的小伙伴們&#xff01;你是否曾經在深夜里&#xff0c;為了自動化點外賣、篩機票、抓網頁數據焦頭爛額&#xff1f;有沒有幻想過哪天能出個“貼心AI管家”&#xff0c;一鍵點菜、搞定事務、自動操作網頁&#xff0c;比你還懂你&#xff1f;更關鍵——還讓…

【東楓科技】usrp rfnoc 開發環境搭建

作者 太原市東楓電子科技有限公司 &#xff0c;代理銷售 USRP&#xff0c;Nvidia&#xff0c;等產品與技術支持&#xff0c;培訓服務。 環境 Ubuntu 20.04 依賴包 sudo apt-get updatesudo apt-get install autoconf automake build-essential ccache cmake cpufrequtils …

Ntfs!ReadIndexBuffer函數分析之根目錄讀取索引緩沖區的一個例子

Ntfs!ReadIndexBuffer函數分析之根目錄讀取索引緩沖區的一個例子 第一部分&#xff1a; 0: kd> p Ntfs!ReadIndexBuffer0xdc: f7173962 e829f60300 call Ntfs!NtfsCheckIndexBuffer (f71b2f90) 0: kd> t Ntfs!NtfsCheckIndexBuffer: f71b2f90 55 p…

LumaDot (亮度可調的屏幕圓點)

應用名稱 LumaDot &#xff08;源自 “Luminance”&#xff08;亮度&#xff09; “Dot”&#xff08;圓點&#xff09;&#xff0c;強調其核心功能&#xff1a;亮度可調的屏幕圓點&#xff09; 應用說明 LumaDot 是一款輕量級 Windows 桌面工具&#xff0c;專為需要屏幕標記…

HarmonyOS 鴻蒙應用開發基礎:EventHub,優雅解決跨組件通信難題

EventHub是鴻蒙開發中用于線程內通信的事件中心模塊&#xff0c;基于發布訂閱模式實現組件間的高效通信。它完美解決了傳統回調方式在多層嵌套場景下的痛點&#xff0c;使得組件間的通信更加靈活和易于管理。 核心特性 事件中心機制&#xff1a;通過事件名進行通信&#xff0c…

前端框架token相關bug,前后端本地聯調

今天我搭建框架的時候&#xff0c;我想請求我自己的本地&#xff01;然后我自己想鏈接我自己的本地后端&#xff0c;我之前用的前端項目&#xff0c;都是鏈別人的后端&#xff0c;基本上很少情況會鏈接自己的后端&#xff01;所以我當時想的是&#xff0c;我前后端接口一樣&…

【數據結構初階】順序表專題

文章目錄 順序表1.數據結構相關概念1、什么是數據結構2、為什么需要數據結構&#xff1f; 2.順序表1、順序表的概念及結構2、順序表分類3、動態順序表的實現1.定義一個動態順序表2.順序表的初始化3.順序表的銷毀4.順序表達的尾插5.順序表的頭插6.空間大小檢查函數7.順序表的尾刪…

從神經生物學到社會心理學:游戲沉迷機制的深度解構

你是否曾在深夜放下手機時驚覺&#xff1a;"明明只想玩10分鐘&#xff0c;怎么天都亮了&#xff1f;"這不是意志力薄弱的表現&#xff0c;而是價值數十億美元的游戲產業用神經科學精心設計的認知陷阱。 當《王者榮耀》的Victory音效讓你心跳加速&#xff0c;當《原神…

15.集合框架的學習

一、簡介 集合框架&#xff08;Collection Framework&#xff09; 是 Java 提供的一套用于存儲、操作和處理數據集合的標準化架構。它主要位于 java.util 包中&#xff0c;提供了一組 接口 和 實現類&#xff0c;用于操作不同類型的數據集合&#xff0c;如列表&#xff08;List…

【方案分享】展廳智能講解:基于BLE藍牙Beacon的自動講解觸發技術實現

【方案分享】展廳智能講解&#xff1a;基于BLE藍牙Beacon的自動講解觸發技術實現 讓觀眾靠近展品即可自動彈出講解頁面&#xff0c;是智能展廳的核心功能之一。本文將從軟硬件技術、BLE Beacon原理、微信小程序實現、優劣對比與拓展方案五個維度&#xff0c;系統講解“靠近展臺…

微前端架構:從單體到模塊化的前端新革命

在信息技術&#xff08;IT&#xff09;的迅猛發展中&#xff0c;前端開發領域正迎來一場顛覆性的變革 —— 微前端架構&#xff08;Micro - Frontends&#xff09;。2025 年&#xff0c;隨著 Web 應用的復雜性激增、團隊協作需求的增長以及用戶對無縫體驗的期待&#xff0c;微前…

React中常用的鉤子函數:

一. 基礎鉤子 (1)useState 用于在函數組件中添加局部狀態。useState可以傳遞一個參數&#xff0c;做為狀態的初始值&#xff0c;返回一個數組&#xff0c;數組的第一個元素是返回的狀態變量&#xff0c;第二個是修改狀態變量的函數。 const [state, setState] useState(ini…

如何在 Windows 11 或 10 上通過 PowerShell 安裝 Docker Desktop

了解如何使用 PowerShell 或命令提示符在 Windows 11 或 10 上安裝 Docker CLI 和 Docker Desktop GUI,以創建容器運行虛擬機。無需手動訪問網站下載安裝程序,所有操作都將在命令終端完成。 Docker 是一個強大的容器化平臺,允許開發人員將應用程序及其依賴項打包為輕量級容…

Python實例題:人機對戰初體驗Python基于Pygame實現四子棋游戲

目錄 Python實例題 題目 代碼實現 實現原理 游戲邏輯&#xff1a; AI 算法&#xff1a; 界面渲染&#xff1a; 關鍵代碼解析 游戲棋盤渲染 AI 決策算法 勝利條件檢查 使用說明 安裝依賴&#xff1a; 運行游戲&#xff1a; 游戲操作&#xff1a; 擴展建議 增強…

一文詳解 HLS

1 HLS的簡介 1.1 HLS的背景 從 RTMP&#xff08;Real-Time Messaging Protocol&#xff0c;實時消息傳輸協議&#xff09; 到 HLS&#xff08;HTTP Live Streaming&#xff0c;HTTP直播流&#xff09; 的技術演進&#xff0c;本質上是直播協議從 專有協議 向 通用 Web 協議 的…

go 訪問 sftp 服務 github.com/pkg/sftp 的使用踩坑,連接未關閉(含 sftp 服務測試環境搭建)

前言 最近在使用 sftp 服務時&#xff0c;被告知發起了海量的連接&#xff0c;直接把服務器搞崩&#xff0c;ip 被封了。 這是啥情況&#xff1f; golang 寫的代碼&#xff0c;我就正常的訪問 sftp 服務&#xff0c;連接使用過后也都關閉了&#xff0c;咋會出現連接一直連著…