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

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

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

保護(hù)Log4j日志中的敏感數(shù)據(jù),兩步搞定!

jf_ro2CN3Fa ? 來源:芋道源碼 ? 2023-10-18 16:03 ? 次閱讀

介紹

我們可以通過實(shí)現(xiàn)自定義日志附加程序并使用正則表達(dá)式來識(shí)別和屏蔽敏感信息,從而屏蔽 Spring Boot 應(yīng)用程序的 log4j 日志中的敏感數(shù)據(jù)。以下是具體方法實(shí)戰(zhàn):

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

  • 項(xiàng)目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 視頻教程:https://doc.iocoder.cn/video/

第1步:創(chuàng)建自定義日志 Appender

創(chuàng)建一個(gè)擴(kuò)展 log4j 提供的 AppenderSkeleton 的類。這個(gè)自定義appender將在日志消息寫入日志之前攔截它們,并應(yīng)用必要的屏蔽。

importorg.apache.log4j.AppenderSkeleton;
importorg.apache.log4j.spi.LoggingEvent;

publicclassMaskingAppenderextendsAppenderSkeleton{

@Override
protectedvoidappend(LoggingEventloggingEvent){
Stringmessage=loggingEvent.getMessage().toString();
StringmaskedMessage=maskSensitiveData(message);
loggingEvent.setMessage(maskedMessage);
super.append(loggingEvent);
}

@Override
publicvoidclose(){
//Cleanupresources,ifany
}

@Override
publicbooleanrequiresLayout(){
returnfalse;
}

privateStringmaskSensitiveData(Stringmessage){
//Implementyourlogictomasksensitivedatausingregularexpressions
//Fordemonstrationpurposes,let'sassumewewanttomaskcreditcardnumbers
returnmessage.replaceAll("\d{4}-\d{4}-\d{4}-\d{4}","****-****-****-****");
}
}

log4j中的一個(gè)appender負(fù)責(zé)將日志消息寫入各種輸出中。通過擴(kuò)展AppenderSkeleton類,我們創(chuàng)建了一個(gè)自定義appender,它可以在將日志消息寫入日志之前對(duì)其進(jìn)行修改。

正則表達(dá)式(regex)是用于模式匹配和操作字符串的強(qiáng)大模式。在maskSensitiveData()方法中,我們使用regex來識(shí)別和替換敏感數(shù)據(jù)。在示例中,我們使用模式\d{4}-\d{4}-\d{4}-\d{4}匹配格式為“xxxx-xxxx”的信用卡號(hào),并將其替換為“-”。

append()方法

log4j在準(zhǔn)備添加日志消息時(shí)調(diào)用此方法。在MaskingAppender類中,我們覆蓋這個(gè)方法來攔截日志消息,使用maskSensitiveData()方法對(duì)敏感數(shù)據(jù)應(yīng)用masking,然后將修改后的消息傳遞給超類的append()方法。

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

  • 項(xiàng)目地址:https://github.com/YunaiV/yudao-cloud
  • 視頻教程:https://doc.iocoder.cn/video/

第2步:配置Log4j

在 Spring Boot 應(yīng)用程序的配置文件中,我們需要配置 log4j 以使用自定義 Appender。我們還需要根據(jù)您的要求指定日志級(jí)別和其他設(shè)置。這是使用 application.properties 配置 log4j 的示例:

#Log4jconfiguration
log4j.rootLogger=INFO,maskedAppender

log4j.appender.maskedAppender=com.example.MaskingAppender
log4j.appender.maskedAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.maskedAppender.layout.ConversionPattern=%d[%t]%-5p%c-%m%n

第3步:包含 Log4j

確保在Spring Boot應(yīng)用的構(gòu)建文件中有必要的log4j依賴項(xiàng)(例如,Maven的pom.xml):




log4j
log4j
1.2.17


第4步::測(cè)試日志屏蔽

現(xiàn)在,當(dāng)我們?cè)?Spring Boot 應(yīng)用程序中使用 log4j 記錄消息時(shí),敏感數(shù)據(jù)將被自動(dòng)屏蔽。例如:

importorg.apache.log4j.Logger;

publicclassSomeService{
privatestaticfinalLoggerlogger=Logger.getLogger(SomeService.class);

publicvoidprocessSensitiveData(Stringdata){
logger.info("Processingsensitivedata:"+data);//Sensitivedatawillbemaskedinthelogs
}
}

在應(yīng)用程序代碼中,可以使用log4j提供的Logger來記錄消息。在本例中,我們使用logger.info()記錄一條消息。包含敏感數(shù)據(jù)的日志消息作為字符串連接傳遞。MaskingAppender攔截此消息并在將其寫入日志之前應(yīng)用掩碼。

在上面的例子中,如果數(shù)據(jù)參數(shù)中包含類似“1234—5678—9012—3456”的信用卡號(hào),那么它將在日志輸出中被屏蔽為“正在處理敏感數(shù)據(jù):——

結(jié)論

通過遵循這些步驟和概念,可以有效地屏蔽Spring Boot應(yīng)用程序log4j日志中的敏感數(shù)據(jù)。請(qǐng)記住根據(jù)我們的特定需求和敏感數(shù)據(jù)模式調(diào)整maskSensitiveData()方法中的掩碼邏輯。


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

    關(guān)注

    1

    文章

    567

    瀏覽量

    20432
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    37

    文章

    3221

    瀏覽量

    57499
  • 掩碼
    +關(guān)注

    關(guān)注

    0

    文章

    3

    瀏覽量

    1209

原文標(biāo)題:保護(hù) Log4j 日志中的敏感數(shù)據(jù),兩步搞定!

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    slf4j打印日志必須的三個(gè)依賴包相關(guān)資料推薦

    1、slf4j打印日志必須的三個(gè)依賴包  日志相關(guān)包 slf4j打印日志必須的三個(gè)依賴包  slf4j
    發(fā)表于 10-19 14:57

    STM32Cube工具的log4j漏洞CVE-2021-44228和CVE-2021-45046有何影響?

    STM32Cube工具的log4j漏洞CVE-2021-44228和CVE-2021-45046有何影響?
    發(fā)表于 12-07 07:02

    java 日志框架Spring Boot分析

    應(yīng)用程序輸出相應(yīng)的日志。 在傳統(tǒng)Java應(yīng)用程序,我們一般會(huì)使用類似Log4j這樣的日志框架來輸出
    發(fā)表于 09-28 14:58 ?0次下載

    logback異常輸出詳細(xì)信息(調(diào)用堆棧)分析

     Logback是一個(gè)開源的日志組件,是log4j的作者開發(fā)的用來替代log4j的。logback由三個(gè)部分組成,logback-core, logback-classic, logback-access。其中l(wèi)ogback-c
    發(fā)表于 11-28 16:31 ?8233次閱讀

    使用IBM Cloud超級(jí)保護(hù)加密服務(wù)保護(hù)敏感數(shù)據(jù)

    利用量子安全加密技術(shù),為應(yīng)對(duì)未來的威脅做好準(zhǔn)備:盡管量子計(jì)算的目標(biāo)是解決即便是世界上最強(qiáng)大的超級(jí)計(jì)算機(jī)也無法解決的復(fù)雜問題,但未來的容錯(cuò)量子計(jì)算機(jī)可能也會(huì)帶來潛在風(fēng)險(xiǎn),例如能夠快速破解加密算法并訪問敏感數(shù)據(jù)。
    的頭像 發(fā)表于 01-06 16:54 ?1645次閱讀

    Java日志框架的王者是誰

    不及Apache 的新一代日志框架 - Log4j 目前來看,Log4j2 就是王者,其他日志框架都不是對(duì)手 Log4j2簡(jiǎn)介 Apache
    的頭像 發(fā)表于 10-13 09:12 ?1316次閱讀

    使用Keysight免費(fèi)評(píng)估Log4j/Log4Shell零日漏洞

    在過去72小時(shí)左右的時(shí)間里,網(wǎng)絡(luò)安全領(lǐng)域的大多數(shù)人已經(jīng)意識(shí)到Log4j/Log4Shell零日漏洞及其對(duì)大多數(shù)web服務(wù)器、云應(yīng)用程序、互聯(lián)網(wǎng)設(shè)備和嵌入式設(shè)備的廣泛影響。你可以閱讀CVE-2021-44228記錄的所有血淋淋的
    的頭像 發(fā)表于 12-21 10:50 ?1449次閱讀

    Log4-detector Log4J漏洞版本掃描器

    log4j-detector.zip
    發(fā)表于 05-06 11:55 ?0次下載
    <b class='flag-5'>Log4</b>-detector <b class='flag-5'>Log4J</b>漏洞版本掃描器

    log4j-finder Log4Shell漏洞掃描工具

    log4j-finder.zip
    發(fā)表于 05-06 11:54 ?1次下載
    <b class='flag-5'>log4j</b>-finder <b class='flag-5'>Log4</b>Shell漏洞掃描工具

    fix_log4j2 log4j2漏洞緩解工具

    fix_log4j2.zip
    發(fā)表于 05-06 10:22 ?0次下載
    fix_<b class='flag-5'>log4j</b>2 <b class='flag-5'>log4j</b>2漏洞緩解工具

    如何復(fù)現(xiàn)Log4j2漏洞

    ApacheLog4j2是一個(gè)開源的Java日志框架,被廣泛地應(yīng)用在中間件、開發(fā)框架與Web應(yīng)用
    的頭像 發(fā)表于 02-13 10:55 ?1316次閱讀

    log4j日志框架分析

    og4j是Apache下的一款開源的日志框架,能夠滿足我們?cè)陧?xiàng)目中對(duì)于日志記錄的需求。log4j提供了簡(jiǎn)單的API調(diào)用,強(qiáng)大的日志格式定義以
    的頭像 發(fā)表于 02-28 14:32 ?1044次閱讀
    <b class='flag-5'>log4j</b><b class='flag-5'>日志</b>框架分析

    Spring Boot的日志框架使用

    目前市面上常見的日志框架有:slf4j(Simple Logging Facade for Java)、logback、log4j、log4j2、commons-logging(Spr
    的頭像 發(fā)表于 06-02 10:59 ?882次閱讀
    Spring Boot的<b class='flag-5'>日志</b>框架使用

    基于Rust的Log日志庫介紹

    了一種簡(jiǎn)單的方法來實(shí)現(xiàn)日志記錄,本文將介紹如何使用Rust的Log庫作為日志門面,并結(jié)合env_logger和log4rs個(gè)
    的頭像 發(fā)表于 09-19 14:49 ?3250次閱讀

    Log4cpp優(yōu)勢(shì)及優(yōu)點(diǎn)

    命令行、文件、回卷文件、內(nèi)存、syslog服務(wù)器、Win事件日志等; 可以動(dòng)態(tài)控制日志記錄級(jí)別,在效率和功能中進(jìn)行調(diào)整; 所有配置可以通過配置文件進(jìn)行動(dòng)態(tài)調(diào)整; 多語言支持,包括Java(log4j
    的頭像 發(fā)表于 11-09 14:27 ?613次閱讀
    <b class='flag-5'>Log4</b>cpp優(yōu)勢(shì)及優(yōu)點(diǎn)