【log4j2日誌框架】敏感字元過濾
0、背景
zookeeper服務端所使用的日誌框架被我替換為了log4j2,zk的sessionid又被負責安全的大佬評估為敏感資訊,不能直接列印,所以要想一個在不修改原始碼的情況快速解決sessionid列印遮蔽的辦法。
1、log4j2的replace功能
很多日誌框架都有過濾替換的功能,log4j2也不例外,支援正則替換。
先看zk的sessionid生成方法
sessionid高位為服務id,中間為時間戳,低位為遞增序列,最大值為Long的最大值。
log4j2.properties的pattern中增加正規表示式
appender.rolling.layout.pattern = %d %p %c{1.} [%t] %replace{%msg}{0x[a-f0-9]{15,}|0x0}{0x*} -%replace{%ex}{0x[a-f0-9]{15,}|0x0}{0x*}%n
appender.rolling.layout.alwaysWriteExceptions=false
這裡不僅replace了msg,還replace了ex,因為log4j2中異常是單獨區分的,正常日誌和異常日誌中均有可能出現sessionid,因此要同時對msg和ex配置replace。appender.rolling.layout.alwaysWriteExceptions預設是開啟的,既然已經在pattern中配置了ex就要關閉alwaysWriteExceptions。
最終完美替換所有sessionid為0x*
相關文章
- SpringBoot整合Log4j2日誌框架Spring Boot框架
- SpringBoot 整合 Log4j2 日誌框架Spring Boot框架
- 用laravel框架實現敏感詞彙過濾功能Laravel框架
- JavaWeb - 【Filter】敏感詞過濾JavaWebFilter
- 教你如何實現Python 過濾敏感詞Python
- JavaScript評論敏感詞過濾程式碼JavaScript
- python過濾nginx access日誌存入資料庫中PythonNginx資料庫
- 日誌-log4j2基於AsyncLogger的非同步日誌列印非同步
- 日誌-log4j2基於AsyncAppender的非同步日誌列印APP非同步
- JAVA使用DFA演算法過濾敏感詞Java演算法
- js實現敏感詞過濾演算法JS演算法
- php過濾html標籤、特殊字元、轉義字元PHPHTML字元
- 使用Log4j2輸出日誌演示
- SpringBoot 實現整合log4j2日誌Spring Boot
- log4j2分層輸出日誌
- flask 框架日誌Flask框架
- SpringBoot 日誌框架Spring Boot框架
- DFA演算法之內容敏感詞過濾演算法
- 過濾或者查詢敏感詞(DFA 演算法)演算法
- 新特性解讀 | MySQL 8.0錯誤日誌深入過濾(上)MySql
- 如何快速過濾出一次請求的所有日誌?
- Logback中如何自定義靈活的日誌過濾規則
- Safari網頁敏感文字過濾外掛:Profanity Filter for Mac網頁FilterMac
- DFA在C#中的實現:過濾敏感詞C#
- 開源了一個 JavaScript 版敏感詞過濾庫JavaScript
- 日誌框架學習框架
- Java 日誌框架 LogbackJava框架
- Laravel/Lumen 自定義錯誤日誌格式過濾堆疊資訊Laravel
- MySQL隱碼攻擊Fuzz過濾字元字典MySql字元
- 高效的關鍵詞替換和敏感詞過濾工具
- 日誌採集框架Flume框架
- log4j2同步日誌引發的效能問題
- Log4j2 + SLF4j打造日誌系統
- 萬字長文帶你瞭解Java日誌框架使用Java日誌框架Java框架
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架
- 基於PHP + TRIE樹實現敏感詞過濾演算法PHP演算法
- 日誌服務之敏感資訊脫敏與審計
- Spring Boot 2 中如何使用 Log4j2 記錄日誌Spring Boot