字符串脱敏
在把 API 密钥、令牌、邮箱和账号粘贴到工单或聊天前先做遮蔽。可设置保留开头与结尾的字符数、遮蔽字符,以及是否隐藏真实长度。
分享密钥的「样子」,而不是密钥本身。 粘贴令牌、密钥、邮箱或账号,选择开头和结尾各保留多少字符。中间部分会被替换为遮蔽字符,同事可以确认你指的是哪一份凭证,却永远看不到它。
脱敏不是加密。如果密钥已经泄露,请轮换它,而不是把它打码。
在把 API 密钥、令牌、邮箱和账号粘贴到工单或聊天前先做遮蔽。可设置保留开头与结尾的字符数、遮蔽字符,以及是否隐藏真实长度。
分享密钥的「样子」,而不是密钥本身。 粘贴令牌、密钥、邮箱或账号,选择开头和结尾各保留多少字符。中间部分会被替换为遮蔽字符,同事可以确认你指的是哪一份凭证,却永远看不到它。
脱敏不是加密。如果密钥已经泄露,请轮换它,而不是把它打码。
把凭证的中段涂掉,能很好地解决一个很窄的问题:让你在不传输密钥的前提下谈论它。工单、缺陷报告、截图和聊天记录一直在泄露凭证,而起因往往只是有人需要确认「用的是哪一个」密钥,而不是「密钥是什么」。展示 sk_live_51H8...FgH 完整回答了前一个问题,对后一个则只字未提。
这就是它的全部价值,因此有必要把边界说清楚。脱敏是为人际沟通所做的单向、有损变换。它不是加密,因为没有密钥、也不打算还原;它不是哈希,因为它并不为抵抗什么而设计。它更像小票上只打印银行卡后四位:足以识别,不足以使用。
每多露一个字符,攻击者就少猜一个字符,所以在能完成识别任务的前提下,前后缀越短越好。对长随机令牌来说,两端各留四个字符是合理的默认值,多数服务商的控制台也是这么显示的。对短值要留得更少:八位 PIN 露出四位,几乎就什么都没剩下。
结构化的值需要额外斟酌,因为可见部分可能比看上去更有信息量。许多 API 密钥带有含义明确的前缀,而 sk_live_ 与 sk_test_ 的区分,通常正是你想保留的。邮箱地址则是相反的陷阱:保留域名一般没问题,但本地名加上一个小域名往往能定位到具体某个人,于是脱敏后的字符串又变回了个人信息。
本工具不允许首尾两个窗口重叠。如果两项设置加起来会覆盖整个字符串,它会自动收缩——因为重叠遮蔽的失败后果,是把原值完整打印出来。
保留长度的遮蔽也保留了信息。星号的个数会准确告诉读者密钥有多长,这既缩小了暴力破解的范围,也可能直接暴露凭证类型,因为很多密钥格式长度固定。对密码而言,公开长度是实实在在的让步。
固定宽度选项会把整个中段替换为固定数量的遮蔽字符,无视真实长度,于是所有脱敏结果看起来一样长。只要输出会被团队之外的人看到,就该启用它。当你和同事一起排查、长度本身具有诊断价值时(例如怀疑环境变量被截断),再使用保留长度的默认行为。
最后,请把它当作一个排版步骤,而不是事故响应。如果一个仍然有效的密钥已经出现在工单、日志或代码仓库里,给副本打码不会改变原始泄露的事实。请先轮换凭证,之后再对要粘贴的内容做脱敏。