0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

SpringBoot日志脫敏的方式介紹

jf_ro2CN3Fa ? 來(lái)源:csdn ? 2023-01-09 10:49 ? 次閱讀

前言

在我們書(shū)寫(xiě)代碼的時(shí)候,會(huì)書(shū)寫(xiě)許多日志代碼,但是有些敏感數(shù)據(jù)是需要進(jìn)行安全脫敏處理的。

對(duì)于日志脫敏的方式有很多,常見(jiàn)的有①使用conversionRule標(biāo)簽,繼承MessageConverter②書(shū)寫(xiě)一個(gè)脫敏工具類(lèi),在打印日志的時(shí)候?qū)μ囟ㄌ刈侄芜M(jìn)行脫敏返回。

兩種方式各有優(yōu)缺點(diǎn):

第一種方式需要修改代碼,不符合開(kāi)閉原則。

第二種方式,需要在日志方法的參數(shù)進(jìn)行脫敏,對(duì)原生日志有入侵行為。

基于 Spring Boot + MyBatis Plus + Vue & Element 實(shí)現(xiàn)的后臺(tái)管理系統(tǒng) + 用戶(hù)小程序,支持 RBAC 動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能

自定義脫敏組件(slf4j+logback)

一個(gè)項(xiàng)目在書(shū)寫(xiě)了很多打印日志的代碼,但是后面有了脫敏需求,如果我們?nèi)ナ謩?dòng)改動(dòng)代碼,會(huì)花費(fèi)大量時(shí)間。如果引入本組件,完成配置即可輕松完成脫敏。(僅需三步可輕松配置)

一、自定義脫敏組件 - 脫敏效果演示

7078b60c-837d-11ed-bfe3-dac502259ad0.png708a6406-837d-11ed-bfe3-dac502259ad0.png

二、自定義脫敏組件 - 使用方式

1、引入Jar包依賴(lài)

前提是你將Jar包打入本地倉(cāng)庫(kù),Jar包地址見(jiàn)后文。


pers.liuchengyin
logback-desensitization
1.0.0

2、替換日志文件配置類(lèi)(logback.xml)

日志打印方式都只需要替換成脫敏的類(lèi)即可,如果你的業(yè)務(wù)不需要,則無(wú)需替換。

①ConsoleAppender - 控制臺(tái)脫敏

//原類(lèi)
ch.qos.logback.core.ConsoleAppender
//替換類(lèi)
pers.liuchengyin.logbackadvice.LcyConsoleAppender

②RollingFileAppender - 滾動(dòng)文件

//原類(lèi)
ch.qos.logback.core.rolling.RollingFileAppender
//替換類(lèi)
pers.liuchengyin.logbackadvice.LcyRollingFileAppender

③FileAppender - 文件

//原類(lèi)
ch.qos.logback.core.FileAppender
//替換類(lèi)
pers.liuchengyin.logbackadvice.LcyFileAppender

替換示例:



 



${CONSOLE_LOG_PATTERN}



3、添加脫敏配置文件(logback-desensitize.yml)

該配置文件應(yīng)該放在resources文件下

70a00bee-837d-11ed-bfe3-dac502259ad0.png

三、自定義脫敏組件 - 脫敏規(guī)范

1、支持?jǐn)?shù)據(jù)類(lèi)型

八大基本類(lèi)型及其包裝類(lèi)型、Map、List、業(yè)務(wù)里的Pojo對(duì)象、List<業(yè)務(wù)里的Pojo對(duì)象>、JSON字符串。

注:在配置文件中配置的時(shí)候,只需要配置對(duì)象里的屬性值就行。

2、不支持的數(shù)據(jù)類(lèi)型

List<八大基本類(lèi)型及包裝類(lèi)型>,因?yàn)椴恢烂撁舻臄?shù)據(jù)源具體是哪一個(gè)。

3、匹配規(guī)則

key + 分割符 + value,目前僅支持冒號(hào)(:)和等號(hào)(=),示例如下:

log.info("youremail:{},yourphone:{}","123456789@qq.com","15310763497");
log.info("youremail={},yourcellphone={}","123456789@qq.com","15310763497");

key:定義了對(duì)應(yīng)需要脫敏的關(guān)鍵字,如上訴的email、phone等以及業(yè)務(wù)對(duì)象中的字段、Map中的Key、JSON中的Key

value:需要脫敏的值,如上訴的123456789@qq.com、15310763497。

4、日志規(guī)范

建議書(shū)寫(xiě)日志的時(shí)候盡量規(guī)范,對(duì)于key為中文的是沒(méi)有辦法脫敏的,規(guī)范程度可以見(jiàn)脫敏效果演示里的代碼。

四、logback-desensitize.yml配置說(shuō)明

>基于SpringCloudAlibaba+Gateway+Nacos+RocketMQ+Vue&Element實(shí)現(xiàn)的后臺(tái)管理系統(tǒng)+用戶(hù)小程序,支持RBAC動(dòng)態(tài)權(quán)限、多租戶(hù)、數(shù)據(jù)權(quán)限、工作流、三方登錄、支付、短信、商城等功能
>
>*項(xiàng)目地址:
>*視頻教程

#日志脫敏
log-desensitize:
#是否忽略大小寫(xiě)匹配,默認(rèn)為true
ignore:true
#是否開(kāi)啟脫敏,默認(rèn)為false
open:true
#pattern下的key/value為固定脫敏規(guī)則
pattern:
#郵箱-@前第4-7位脫敏
email:"@>(4,7)"
#qq郵箱-@后1-3位脫敏
qqemail:"@<(1,3)"
????#?姓名?-?姓脫敏,如*杰倫
????name:?1,1
????#?密碼?-?所有需要完全脫敏的都可以使用內(nèi)置的password
????password:?password
??patterns:
????#?身份證號(hào),key后面的字段都可以匹配以下規(guī)則(用逗號(hào)分隔)
????-?key:?identity,idcard
??????#?定義規(guī)則的標(biāo)識(shí)
??????custom:
????????# defaultRegex表示使用組件內(nèi)置的規(guī)則:identity表示身份證號(hào)?-?內(nèi)置的18/15位
????????-?defaultRegex:?identity
??????????position:?9,13
????????#?內(nèi)置的other表示如果其他規(guī)則都無(wú)法匹配到,則按該規(guī)則處理
????????-?defaultRegex:?other
??????????position:?9,10
????#?電話(huà)號(hào)碼,key后面的字段都可以匹配以下規(guī)則(用逗號(hào)分隔)
????-?key:?phone,cellphone,mobile
??????custom:
????????#?手機(jī)號(hào)?-?內(nèi)置的11位手機(jī)匹配規(guī)則
????????-?defaultRegex:?phone
??????????position:?4,7
????????#?自定義正則匹配表達(dá)式:座機(jī)號(hào)(帶區(qū)號(hào),號(hào)碼七位|八位)
????????-?customRegex:?"^0[0-9]{2,3}-[0-9]{7,8}"
????????#?-后面的1-4位脫敏
??????????position:?"-<(1,4)"
????????#?自定義正則匹配表達(dá)式:座機(jī)號(hào)(不帶區(qū)號(hào))
????????-?customRegex:?"^[0-9]{7,8}"
??????????position:?3,5
????????#?內(nèi)置的other表示如果其他規(guī)則都無(wú)法匹配到,則按該規(guī)則處理
????????-?defaultRegex:?other
??????????position:?1,3
????#?這種方式不太推薦?-?一旦匹配不上,就不會(huì)脫敏
????-?key:?localMobile
??????custom:
??????????customRegex:?"^0[0-9]{2,3}-[0-9]{7,8}"
??????????position:?1,3

上面這個(gè)配置是相對(duì)完整的,一定要嚴(yán)格遵守層級(jí)配置格式。

自定義脫敏支持的方式

1、key:value的方式

phone:4,7,表示phone屬性的4-7位進(jìn)行脫敏

原始數(shù)據(jù):13610357861

脫敏后:136**** 7861

2、以符號(hào)作為起始、結(jié)束節(jié)點(diǎn)作為脫敏標(biāo)志

emai:"@>(4,7)",@為脫敏標(biāo)志,>表示其為結(jié)束節(jié)點(diǎn),<表示其為開(kāi)始節(jié)點(diǎn)。即@>表示對(duì)@之前的進(jìn)行脫敏,@<表示對(duì)@之后的進(jìn)行脫敏。這個(gè)示例就是@前的數(shù)據(jù)的第4-7位進(jìn)行脫敏。

注意:這種規(guī)則里的雙引號(hào)、括號(hào)不能省略,其次:和=不能作為標(biāo)志符號(hào),因?yàn)楹推ヅ湟?guī)則有沖突

原始數(shù)據(jù):123456789@qq.com

"@>(4,7)"脫敏后:123**** 89@qq.com

"@<(1,3)"脫敏后:123456789@***com

3、自定義正則脫敏

patterns:
#手機(jī)號(hào)
-key:phone,mobile
custom:
#手機(jī)號(hào)的正則
-customRegex:"^1[0-9]{10}"
#脫敏范圍
position:4,7

customRegex:正則表達(dá)式,如果符合該表達(dá)式,則使用其對(duì)應(yīng)的脫敏規(guī)則(position)

4、一個(gè)字段,根據(jù)多種值含義進(jìn)行自定義脫敏

比如說(shuō),username字段的值可以是手機(jī)號(hào)、也可以是郵箱,這個(gè)值動(dòng)態(tài)改變的,前面幾種方式都沒(méi)辦法解決,可以使用該方式。

patterns:
-key:username
custom:
#手機(jī)號(hào)-11位
-defaultRegex:phone
position:4,7
#郵箱-@
-defaultRegex:email
position:"@>(3,12)"
#身份證-15/18位
-defaultRegex:identity
position:1,3
#自定義正則
-customRegex:"^1[0-9]{10}"
position:1,3
#都匹配不到時(shí),按照這種規(guī)則來(lái)
-defaultRegex:other
position:1,3

注意:上面示例中匹配規(guī)則里的 雙引號(hào)和括號(hào) 都不能省略

該組件內(nèi)置四種匹配規(guī)則:手機(jī)號(hào)、身份證號(hào)、郵箱、other(其他匹配不到時(shí)用的),內(nèi)置一種脫敏方式:password,表示完全脫敏,可用于pattren下的。

注:當(dāng)pattern和patterns下的key有重復(fù)的時(shí)候,只會(huì)使用pattern下指定的方式進(jìn)行脫敏。

70ae0bc2-837d-11ed-bfe3-dac502259ad0.png

Jar包打入Maven本地倉(cāng)庫(kù)的方式

1、下載Jar包,放在一個(gè)文件夾里

2、在這個(gè)文件夾里打開(kāi)cmd(打開(kāi)cmd,進(jìn)入到這個(gè)文件夾)

3、執(zhí)行命令(前提保證maven配置正常,使用mvn -v命令查看是否正常,如果顯示版本號(hào)表示正常)

mvninstall:install-file-DgroupId=pers.liuchengyin-DartifactId=logback-desensitization-Dversion=1.0.0-Dpackaging=jar-Dfile=logback-desensitization-1.0.0.jar

命令說(shuō)明:

-DgroupId
表示jar對(duì)應(yīng)的groupId
pers.liuchengyin
-DartifactId:
表示jar對(duì)應(yīng)的artifactId
logback-desensitization
-Dversion
表示jar對(duì)應(yīng)的version
1.0.0







審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    113

    瀏覽量

    6899
  • SpringBoot
    +關(guān)注

    關(guān)注

    0

    文章

    172

    瀏覽量

    145

原文標(biāo)題:Spring Boot 3 步完成日志脫敏,簡(jiǎn)單實(shí)用~

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SpringBoot中的Druid介紹

    SpringBoot中Druid數(shù)據(jù)源配置
    發(fā)表于 05-07 09:21

    基于SpringBoot mybatis方式的增刪改查實(shí)現(xiàn)

    SpringBoot mybatis方式實(shí)現(xiàn)增刪改查
    發(fā)表于 06-18 16:56

    怎樣去使用springboot

    怎樣去使用springboot呢?學(xué)習(xí)springboot需要懂得哪些?
    發(fā)表于 10-25 07:13

    如何實(shí)現(xiàn)SpringBoot項(xiàng)目中的隱私數(shù)據(jù)脫敏

    數(shù)據(jù)脫敏:把系統(tǒng)里的一些敏感數(shù)據(jù)進(jìn)行加密處理后再返回,達(dá)到保護(hù)隱私作用
    的頭像 發(fā)表于 01-08 10:25 ?1866次閱讀

    SpringBoot+Vue實(shí)現(xiàn)網(wǎng)頁(yè)版人臉登錄、人臉識(shí)別案例解析

    Springboot,Mysql,JWT,VUE 2.X 等等技術(shù)實(shí)現(xiàn),主要功能點(diǎn):人臉列表CRUD,日志列表CRUD,基于自建人臉庫(kù)通過(guò)base64編碼方式存儲(chǔ)人臉圖片,通過(guò)調(diào)用騰訊云人臉對(duì)比API場(chǎng)景實(shí)現(xiàn)。
    發(fā)表于 02-23 15:36 ?990次閱讀

    SpringBoot+Vue實(shí)現(xiàn)網(wǎng)頁(yè)版人臉登錄、人臉識(shí)別

    技術(shù)點(diǎn):Springboot,Mysql,JWT,VUE 2.X 等等技術(shù)實(shí)現(xiàn),主要功能點(diǎn):人臉列表CRUD,日志列表CRUD,基于自建人臉庫(kù)通過(guò)base64編碼方式存儲(chǔ)人臉圖片,通過(guò)調(diào)用騰訊云人臉對(duì)比API場(chǎng)景實(shí)現(xiàn)
    的頭像 發(fā)表于 03-07 09:27 ?961次閱讀

    什么是 SpringBoot?

    本文從為什么要有 `SpringBoot`,以及 `SpringBoot` 到底方便在哪里開(kāi)始入手,逐步分析了 `SpringBoot` 自動(dòng)裝配的原理,最后手寫(xiě)了一個(gè)簡(jiǎn)單的 `start` 組件,通過(guò)實(shí)戰(zhàn)來(lái)體會(huì)了 `
    的頭像 發(fā)表于 04-07 11:28 ?1183次閱讀
    什么是 <b class='flag-5'>SpringBoot</b>?

    如何實(shí)現(xiàn)一個(gè)注解進(jìn)行數(shù)據(jù)脫敏

    ? 什么是數(shù)據(jù)脫敏 開(kāi)胃菜 使用 Hutool 工具類(lèi)實(shí)現(xiàn)數(shù)據(jù)掩碼 使用 Jackson 進(jìn)行數(shù)據(jù)序列化脫敏 注解實(shí)現(xiàn)數(shù)據(jù)脫敏 1、定義一個(gè)注解 2、創(chuàng)建一個(gè)枚舉類(lèi) 3、創(chuàng)建我們的自定義序列化類(lèi) 4
    的頭像 發(fā)表于 06-14 09:37 ?883次閱讀
    如何實(shí)現(xiàn)一個(gè)注解進(jìn)行數(shù)據(jù)<b class='flag-5'>脫敏</b>

    什么是數(shù)據(jù)脫敏?常用的脫敏規(guī)則有哪些呢?

    數(shù)據(jù)脫敏,指對(duì)某些敏感信息通過(guò)脫敏規(guī)則進(jìn)行數(shù)據(jù)的變形,實(shí)現(xiàn)敏感隱私數(shù)據(jù)的可靠保護(hù)。
    的頭像 發(fā)表于 08-15 10:04 ?2.1w次閱讀
    什么是數(shù)據(jù)<b class='flag-5'>脫敏</b>?常用的<b class='flag-5'>脫敏</b>規(guī)則有哪些呢?

    SpringBoot 連接ElasticSearch的使用方式

    SpringBoot,今天我們就以 SpringBoot 整合 ElasticSearch 為例,給大家詳細(xì)的介紹 ElasticSearch 的使用! SpringBoot 連接
    的頭像 發(fā)表于 10-09 10:35 ?638次閱讀

    Loguru日志記錄器的安裝方式

    Loguru 一個(gè)能徹底解放你的日志記錄器。 它即插即用,具備多種方式滾動(dòng)日志、自動(dòng)壓縮日志文件、定時(shí)刪除等功能。 除此之外,多線(xiàn)程安全、高亮日志
    的頭像 發(fā)表于 10-16 11:35 ?637次閱讀
    Loguru<b class='flag-5'>日志</b>記錄器的安裝<b class='flag-5'>方式</b>

    SpringBoot采用JsonSerializer和Aop實(shí)現(xiàn)可控制的數(shù)據(jù)脫敏

    的確實(shí)現(xiàn)了數(shù)據(jù)脫敏,但是有個(gè)問(wèn)題現(xiàn)在的脫敏針對(duì)的是 只要對(duì)該實(shí)體類(lèi)進(jìn)行了使用返回的接口,中的數(shù)據(jù)都會(huì)進(jìn)行脫敏,在有些場(chǎng)景下是不需要的,所以說(shuō)要進(jìn)行改進(jìn)。
    的頭像 發(fā)表于 11-06 16:15 ?1277次閱讀
    <b class='flag-5'>SpringBoot</b>采用JsonSerializer和Aop實(shí)現(xiàn)可控制的數(shù)據(jù)<b class='flag-5'>脫敏</b>

    kernel日志寫(xiě)入logd介紹

    kernel日志寫(xiě)入logd介紹 通過(guò)logcat命令獲取kernel日志比較特殊,故作為一個(gè)例子進(jìn)行梳理。 2.3.1 整體流程 2.3.2 命令打印kernel日志 通過(guò)logca
    的頭像 發(fā)表于 11-23 17:11 ?481次閱讀
    kernel<b class='flag-5'>日志</b>寫(xiě)入logd<b class='flag-5'>介紹</b>

    盤(pán)點(diǎn)一下PostgreSQL的幾種常用脫敏方式

    PostgreSQL Anonymizer 實(shí)現(xiàn)動(dòng)態(tài)脫敏方式是通過(guò)將定義某個(gè)角色為 "MASKED" 以及脫敏規(guī)則。被授予 "MASKED" 角色的用戶(hù)將無(wú)法訪(fǎng)問(wèn)原始數(shù)據(jù),而其他角色仍然可以訪(fǎng)問(wèn)。它現(xiàn)已支持多種的
    的頭像 發(fā)表于 12-05 09:59 ?414次閱讀
    盤(pán)點(diǎn)一下PostgreSQL的幾種常用<b class='flag-5'>脫敏</b><b class='flag-5'>方式</b>

    數(shù)據(jù)脫敏的3種常見(jiàn)方案,好用到爆!

    數(shù)據(jù)脫敏插件,目前支持地址脫敏、銀行卡號(hào)脫敏、中文姓名脫敏、固話(huà)脫敏、身份證號(hào)脫敏、手機(jī)號(hào)
    的頭像 發(fā)表于 02-25 16:14 ?1438次閱讀
    數(shù)據(jù)<b class='flag-5'>脫敏</b>的3種常見(jiàn)方案,好用到爆!