1. 什么是客户端 API 日志脱敏?
在排查复杂的微服务故障时,开发者常需将 API 日志、HTTP 请求头或 JSON 错误响应分享给团队成员、第三方工单系统或 AI 大模型助手(如 ChatGPT、Claude)。
然而,未脱敏的生产环境日志中常混有敏感凭据,包括 Authorization Bearer JWT Token、数据库密码、API Key、用户邮箱地址及内部服务器 IP 地址。未经处理的日志误传会导致严重的凭据泄露风险与合规合规隐患(如 GDPR / HIPAA)。
2. 常见敏感凭据特征
- Authorization 头部与 JWT:
Bearer eyJhbGciOiJIUzI1NiIsInR5c... - 用户 PII 邮箱地址:
john.doe@company.org - 内网 IPv4 / IPv6 地址:
192.168.1.42或2001:db8::1 - 敏感 JSON 键名:包含
password、secret、api_key、credit_card的属性。
3. 浏览器本地脱敏算法代码
应在复制或提交文本前,于浏览器本地内存中完成脱敏。基于模式的遮蔽只能降低误泄露风险,并不能替代完整的安全扫描;分享前仍需人工复核输出:
ts
export function redactSensitiveData(input: string, customKeysRegex = "password|secret|token|api_key"): { redactOutput: string; itemsMasked: number } {
let output = input;
let count = 0;
// 1. 脱敏 Bearer / JWT Token
output = output.replace(/(Bearers+)[A-Za-z0-9-._~+/]+=*/g, () => {
count++;
return "Bearer [REDACTED_TOKEN]";
});
// 2. 脱敏邮箱地址
output = output.replace(/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}/g, () => {
count++;
return "[REDACTED_EMAIL]";
});
// 3. 脱敏 IPv4 地址
output = output.replace(/(?:d{1,3}.){3}d{1,3}/g, () => {
count++;
return "[REDACTED_IP]";
});
return { redactOutput: output, itemsMasked: count };
}4. 常见问题解答 (FAQ)
Q1: 运行脱敏工具时,原始日志会被传送到服务端吗?
脱敏逻辑在浏览器内存中运行,不会主动传输粘贴的日志。处理生产数据前,请核对线上脚本、尽量缩小样本,并遵循所在组织的数据政策。
Q2: 我可以自定义正则表达式来匹配我们公司特有的密钥字段吗?
可以!您可以在本站 敏感数据脱敏工具 页面直接输入自定义密钥正则匹配串(例如 password|secret|auth_token|client_secret)。
Q3: 工具默认会自动识别遮蔽哪些类型的敏感信息?
默认自动识别遮蔽 Bearer / JWT 认证头、电子邮箱地址、IPv4 / IPv6 地址以及常用敏感 JSON Key(包含 password, secret, token, api_key 等)。