缺陷附件来自生产环境时,截图里可能带着登录账号、手机号和内网地址,日志里可能夹着会话令牌和连接串。本文按“识别—截图遮蔽—日志替换—复核”四步,给出可直接执行的操作方法、角色分工和提交前核对清单,帮助提交人在不破坏复现信息的前提下完成脱敏。
要点总览(TL;DR)
- 脱敏从列清单开始:按账号类、个人标识类、内部地址类、高风险凭据类逐项扫描截图和日志,重点检查截图边缘的浏览器标签与日志异常堆栈带出的请求体。
- 截图用不透明色块覆盖或直接裁剪,处理后的图片另存为新文件;半透明图层和可编辑图层都可能被还原,覆盖后要放大回看确认。
- 日志按字段替换为固定占位符,如 user_***、138****0000、10.*.*.*,同一对象全篇使用同一占位符,保留时间戳、错误码和调用链。
- 提交人负责首次脱敏并在缺陷单中注明脱敏方式与数据来源,复核人提交前抽查,发现遗漏退回重提并记录原因。
- 把替换规则和核对清单写入团队缺陷提交规范,提交前搜索原始手机号、原始IP、原始账号确认无结果。
先识别:截图和日志里哪些内容需要遮蔽
脱敏的第一步是列清单,把附件中所有可能指向真实用户或内部环境的值找出来。识别时以原始截图和原始日志为输入,输出一份逐项标注的敏感项清单,标注内容包括敏感值所在位置、所属类别和后续处理方式。清单不必复杂,按下面三类对象逐项过一遍即可。
| 对象类别 | 需要遮蔽的内容 | 常见出现位置 |
|---|---|---|
| 账号类 | 登录名、用户ID、邮箱前缀、工号、租户标识 | 页面右上角用户信息、请求参数、日志打印的用户上下文 |
| 个人标识类 | 手机号、身份证号、银行卡号、详细住址 | 表单回显、订单详情、接口响应体、异常堆栈中的参数值 |
| 内部地址类 | 内网IP、主机名、内部域名、接口路径中的环境标识、端口与库名 | 浏览器地址栏、网络请求面板、日志的连接信息与调用地址 |
| 高风险凭据类 | 会话令牌、Cookie、AccessKey、密钥、数据库连接串 | 请求头、日志的鉴权打印、配置文件片段 |
识别时容易漏掉两类位置:一是截图边缘的浏览器标签、书签栏和系统托盘,可能暴露内部系统名称;二是日志中被异常堆栈带出的完整请求体,往往包含多个字段的原始值。逐项扫描后,把清单与附件放在一起,作为后续遮蔽和复核的依据。
截图脱敏:覆盖方式与操作步骤
截图脱敏的目标是让敏感值不可读,同时保留足以复现问题的界面元素和报错信息。推荐使用不透明色块或直接裁剪,覆盖后另存为新文件,避免在原图上叠加半透明图层——半透明覆盖和可编辑图层都可能被还原。
具体操作按以下步骤进行:
- 定位:对照敏感项清单,在截图上逐一找到账号、手机号、内网地址等区域,必要时放大确认边界。
- 覆盖:用不透明色块完全盖住敏感值,色块范围略大于文字本身;位于边缘的敏感信息可直接裁剪掉。
- 另存:将处理后的图片另存为新文件,文件名体现脱敏状态,原始文件不随缺陷单提交。
- 回看:重新打开新文件,放大检查覆盖区域,确认没有残留字符、没有可切换的图层、没有透明度可调。
完成标志是:截图中所有敏感值均不可读,同时报错文案、按钮状态、页面布局等复现所需信息完整可见。如果覆盖范围过大导致关键报错被遮挡,应缩小色块或改用裁剪,保留问题现场。
日志脱敏:替换规则与保留字段
日志脱敏采用字段级替换,用固定占位符代替原始值,保留时间戳、错误码、调用链等排障必需字段。整段删除虽然省事,却会让问题无法复现,应尽量避免。
| 字段类型 | 替换规则 | 示例 |
|---|---|---|
| 登录名、用户ID | 保留前缀或角色标识,其余用星号代替 | user_***、uid_*** |
| 手机号 | 保留前三位和后四位,中间遮蔽 | 138****0000 |
| 内网IP | 保留网段特征,主机位替换 | 10.*.*.*、192.168.*.* |
| 内部域名与路径 | 保留路径结构,替换环境标识 | https://api.***.internal/v1/order |
| 令牌与密钥 | 整体替换为固定标记 | token=***、secret=*** |
替换时注意一致性:同一对象在全篇日志中使用同一占位符,便于对照调用过程排查问题。例如同一用户的多次请求都写成 user_***,不要一处写 user_***、另一处写 u_***。替换完成后通读一遍日志,确认时间戳、错误码、异常堆栈的调用顺序保持原样,且搜索原始手机号、原始IP已无结果。完成标志是日志可读、可复现,且不含任何原始敏感值。
角色分工与提交前检查
脱敏不能只靠提交人自觉,需要明确谁在什么时点做、谁负责复核。角色名称可结合团队实际设置,下面是一种常见分工。
| 角色 | 输入 | 动作 | 输出 |
|---|---|---|---|
| 提交人 | 原始截图与日志、敏感项清单 | 完成首次脱敏,在缺陷单中记录脱敏方式与是否含生产数据 | 脱敏后的附件与说明 |
| 复核人(测试负责人或安全接口人) | 待提交的缺陷单与附件 | 提交前抽查截图覆盖是否彻底、日志是否残留原始值 | 通过或退回意见 |
| 缺陷处理人 | 已通过复核的缺陷单 | 按附件复现问题,发现遗漏时退回提交人 | 复现结论或退回记录 |
复核发现遗漏时,缺陷单退回提交人重新处理,补充脱敏后再次提交复核,退回原因记录在缺陷单中,便于后续统计高频遗漏点。缺陷单本身应写明脱敏方式(如“截图色块覆盖、日志占位符替换”)以及附件是否来自生产环境,让处理人了解数据来源和可信度。
在缺陷单中承载附件与复核记录时,可以使用 ONES Project 的缺陷管理能力:支持一键提交 Bug 至对应项目或迭代,记录和跟踪缺陷修复情况,缺陷状态分布可统计。ONES TestCase 中未通过的用例可快速创建缺陷任务,使测试与研发团队在同一流程中流转缺陷。附件脱敏的具体操作仍由提交人完成,工具承担的是提交、记录与流转环节。
一个完整示例:从原始附件到合规缺陷单
以下为演示情景,用于说明流程,不涉及真实用户数据。
某订单页面在生产环境报错,提交人截取了报错页面并导出了接口日志。原始截图中,页面右上角显示登录名 zhangsan,订单详情回显手机号 13912340000,浏览器地址栏为 http://10.20.30.40/order/detail。原始日志中,请求头带有 token=abc123xyz,用户上下文打印了 uid=10086,连接地址为 jdbc:mysql://10.20.30.41:3306/order_db。
识别清单列出上述六项敏感值后,提交人做如下处理:截图用不透明色块盖住登录名和手机号,裁剪掉地址栏中的内网IP,保留报错弹窗和订单状态字段;日志中将登录名替换为 user_***、手机号替换为 139****0000、内网IP替换为 10.*.*.*、令牌替换为 token=***、用户ID替换为 uid_***,数据库连接串中的主机替换为 10.*.*.*,库名保留。替换后另存为新文件,回看确认原始值已无法搜索到。
缺陷单中,提交人填写问题现象、复现步骤,并在附件说明中注明“截图已色块覆盖,日志已占位符替换,附件来自生产环境”。复核人抽查时,先看截图覆盖区域是否可还原,再在日志中搜索原始手机号和原始IP,确认无结果,同时检查时间戳与错误码是否完整,确认通过后缺陷单进入处理环节。
完成检查:提交前的核对清单
提交前逐项勾选以下检查项,全部通过后再提交缺陷单。
- 截图中的账号、手机号、内网地址、令牌等敏感区域已用不透明色块覆盖或裁剪,放大后不可读、不可还原。
- 日志中的敏感字段已按统一规则替换为占位符,同一对象在全篇使用同一占位符。
- 时间戳、错误码、调用链、异常堆栈等复现所需信息完整保留。
- 在附件中搜索原始手机号、原始IP、原始账号,均无结果。
- 缺陷单中已说明脱敏方式和附件是否来自生产环境。
- 复核人已完成抽查并确认通过,退回意见已处理完毕。
把这套清单和替换规则写入团队的缺陷提交规范,新成员按清单执行即可;团队规模或安全要求变化时,可在此基础上增加凭据类字段的检查项和复核频次。
常见问题
截图里的敏感信息用半透明色块盖住可以吗?
不建议。半透明覆盖和可编辑图层在图片编辑软件中可能被调回透明度或分离图层,原始值仍有被还原的风险。更稳妥的做法是用不透明色块完全盖住敏感值,色块范围略大于文字本身;位于页面边缘的敏感信息,例如地址栏中的内网IP,可以直接裁剪掉。处理完成后另存为新文件,重新打开放大检查,确认没有残留字符、没有可切换的图层。
日志里同一用户出现多次,占位符要不要保持一致?
需要保持一致。同一对象在全篇日志中使用同一占位符,例如同一用户的多次请求都写成 user_***,不要一处写 user_***、另一处写 u_***。这样处理人在复现问题时能对照调用过程,判断哪些请求属于同一会话。替换完成后通读日志,确认时间戳、错误码和异常堆栈的调用顺序保持原样,再搜索原始手机号、原始IP确认无结果。
团队没有专职安全接口人,复核环节怎么安排?
复核角色可以结合团队实际设置,由测试负责人、项目负责人或提交人的同组同事承担,关键是复核动作与提交动作分开,避免提交人自己检查自己。复核人只需做抽查:看截图覆盖区域是否可还原,在日志中搜索原始手机号和原始IP,检查时间戳与错误码是否完整。团队规模较小时可以降低抽查频次,但退回与重提的记录仍应保留在缺陷单中,便于统计高频遗漏点。
附件来自生产环境,缺陷单里需要额外说明什么?
缺陷单中应写明脱敏方式,例如“截图色块覆盖、日志占位符替换”,并注明附件是否来自生产环境。这样处理人能了解数据来源和可信度,在复现时对附件内容有合理预期。如果附件包含生产数据但未做脱敏说明,复核人应退回补充。说明文字本身不要写入原始敏感值,只描述处理方式即可。
脱敏后的日志还能用来排查问题吗?
可以,前提是保留排障必需字段。替换只针对账号、手机号、内网IP、令牌等敏感值,时间戳、错误码、调用链、异常堆栈的调用顺序都应保持原样。整段删除虽然省事,却会让问题无法复现,应尽量避免。如果某个字段既敏感又对定位问题关键,可以保留其结构特征,例如内网IP保留网段、主机位替换为星号,让处理人仍能判断请求走向。


















