You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python日志敏感数据屏蔽脚本优化:解决误屏蔽与未覆盖问题

解决方案:屏蔽日志中=右侧的敏感值

核心思路

针对日志里的键=值格式内容,直接屏蔽=右侧的所有值,同时单独排除时间戳类字段(避免误屏蔽),覆盖所有自定义含密变量、DB连接串、密码等场景。

实现代码与正则说明

import re

def mask_sensitive_logs(log_content):
    # 匹配并保留时间戳字段(适配常见的timestamp、time键,值为YYYY-MM-DD HH:MM:SS格式)
    timestamp_regex = r'(timestamp|time)=(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})'
    # 匹配所有非时间戳的键值对,键由字母/数字/下划线组成,值为=后到空格/行尾的内容
    sensitive_regex = r'(\b[a-zA-Z0-9_]+=)([^ \n]+)'
    
    # 先替换所有非时间戳的敏感值
    masked_content = re.sub(sensitive_regex, r'\1***', log_content)
    # 还原被误匹配的时间戳值
    masked_content = re.sub(timestamp_regex, r'\1=\2', masked_content)
    
    return masked_content

# 测试示例
sample_log = """
timestamp=2024-05-20 15:40:00 user=john_doe pass=P@ssw0rd123 api_key=XYZ789ABC db_conn=mysql://admin:dbpass@192.168.1.1:3306/mydb custom_token=abcdef123456 endpoint=https://prod.example.com/api
"""
print(mask_sensitive_logs(sample_log))

正则细节

  • (\b[a-zA-Z0-9_]+=):捕获作为独立单词的键名+=,确保不会匹配日志中类似url=https://xxx里的子串
  • ([^ \n]+):匹配=右侧直到空格或行尾的所有内容,覆盖无引号包裹的各类值
  • 时间戳单独处理:通过反向引用还原时间字段,避免误屏蔽

扩展适配

如果日志里的敏感值带引号包裹,可添加以下正则处理:

# 适配带双引号的键值对
quoted_regex = r'(\b[a-zA-Z0-9_]+=)"([^"]+)"'
masked_content = re.sub(quoted_regex, r'\1"***"', masked_content)

内容的提问来源于stack exchange,提问作者Navdeep Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:54:52