如何用Logback正则表达式屏蔽JSON请求中指定敏感数据?
Logback屏蔽JSON敏感数据方案
需求说明
需屏蔽JSON中两类敏感内容:
name字段的取值- 数组内
key为id对应的value取值
原始JSON:
{"menu": { "account": { "name": "amal", "saving": [ {"key": "id", "value": "12345678"}, {"key": "Open", "value": "OpenDoc"} ] } }}
期望屏蔽后JSON:
{"menu": { "account": { "name": "****", "saving": [ {"key": "id", "value": "********"}, {"key": "Open", "value": "OpenDoc"} ] } }}
正则表达式与配置
针对两个场景分别编写maskPattern,兼容含换行的格式:
- 屏蔽
name字段
<maskPattern>"name"\s*:\s*"([^"]*)"</maskPattern>
替换规则:将捕获到的字段值替换为"****"
- 屏蔽
key为id对应的value字段
<maskPattern>"key"\s*:\s*"id"\s*,\s*"value"\s*:\s*"([^"]*)"</maskPattern>
替换规则:将捕获到的字段值替换为"********"
完整Logback配置示例
使用replace转换器的实现方式:
<encoder> <pattern> %replace(%msg){'"name"\s*:\s*"([^"]*)"' , '"name": "****"'} %replace(%msg){'"key"\s*:\s*"id"\s*,\s*"value"\s*:\s*"([^"]*)"' , '"key": "id", "value": "********"'}%n </pattern> </encoder>
正则规则说明
\s*:匹配任意数量空白字符(含空格、换行、制表符),解决字段间换行或空格的格式问题[^"]*:匹配除双引号外的任意字符,确保仅捕获目标字段的取值部分,避免跨字段匹配
内容的提问来源于stack exchange,提问作者indika
相关产品推荐
相关产品推荐

