从一起"脱敏失效"说起
一个常见却容易被忽视的安全漏洞:数据库里的敏感字段已经做了静态脱敏或加密存储,但业务人员从系统导出的一份 Excel 报表中,身份证号和手机号却赫然以明文呈现。
问题出在哪里?脱敏策略只覆盖了存储层,却未延伸到数据流出系统的动态环节。 IBM《2026年数据泄露成本报告》显示,单次数据泄露的平均成本已达 499 万美元。而在国内,《数据安全法》和《个人信息保护法》的双重约束下,最高罚款可达 5000 万元或上年度营业额的 5%。
近一个月内,因脱敏缺失导致的公开通报案例已有多起:
- 某马拉松报名系统:API 接口未做数据隔离与脱敏,支付环节暴露他人姓名、身份证号、手机号、血型及紧急联系人信息;
- 某政府网站:行政处罚公示信息未脱敏,当事人身份证号、联系电话等个人敏感信息被公开;
- 某企业业务系统:未对敏感数据做去标识化处理与加密存储,被警告并处罚款。
这些案例指向同一个核心问题:数据在系统内部的"静态安全"不等于流出时的"动态安全" 。当数据以 API 响应、文件导出、图片下载等形态流出时,原有的防护手段往往失效。
本文将围绕数据流出系统的三种主要形态——字段、文件、图片,探讨动态脱敏的技术难点与分层实现思路。
01 需要脱敏的,不只有数据库字段
字段级:API 响应中的 JSON 字段
这是最常见、也最容易被简单处理的场景。API 响应的 JSON 体中,手机号、身份证号、银行卡号等敏感字段需要在不影响正常业务的前提下完成动态脱敏。
实践中,以下三类问题反复出现:
① 对前端输入框回显数据脱敏
对所有请求路径无差别处理,导致用户在编辑页面查看已有数据时,回显字段已被遮盖。用户即便未修改该字段,提交后脱敏值也会覆盖原始数据库。
② 对写入方向的请求体脱敏
同时拦截读取和写入流量,用户提交的 POST 请求体中包含的真实数据被替换,存入数据库的是脱敏后的值,而非用户实际输入的内容。
③ 误将非数据资源识别为敏感内容
将前端 JavaScript 代码、页面配置文件等非数据资源误判为敏感字段,导致页面功能异常、图标渲染失败。
技术要点: 字段级动态脱敏的关键在于边界控制——准确区分读取/写入方向、识别编辑回显场景、排除非数据资源,确保"只脱该脱的数据"。
文件级:导出与外发的办公文档
员工从系统导出、下载或通过邮件/IM 外发 Excel、PDF、Word 文档时,嵌入在表格单元格、段落文本、页眉页脚中的敏感信息往往以明文形式流出。
此阶段数据已脱离数据库的字段结构,嵌入到文档格式之中。脱敏逻辑需要在不破坏文档结构的前提下,定位并替换其中的敏感文本内容,同时对 DOCX、XLSX、PDF 等不同格式的解析与回流能力有较高要求。
技术要点: 流式处理是较优解——在服务端响应阶段以流方式读取文件,脱敏后实时返回客户端,全程不修改源文件,不产生额外存储开销。
图片级:证照与医疗单据
身份证、营业执照等证照中包含姓名、证件号和人脸信息;病历、检验报告等单据中记录着患者身份与诊疗结论。这些敏感信息不是 JSON 字段,也不是文档中的文字,而是像素。
基于文本匹配的脱敏方式对此完全无效,需要引入计算机视觉能力:
- 文本类敏感区域:通过 OCR 识别车牌号、身份证号等文本信息;
- 图像类敏感对象:通过深度学习模型识别人脸、指纹、公章等图像元素。
02 三层防护架构:覆盖数据的每一种流出形态
面对上述三种数据形态,一套完整的动态脱敏方案需要分层构建处理能力,而非依赖单一功能模块。以下从技术架构角度展开说明。
第一层:字段级动态脱敏
核心能力: 对 API 返回给客户端的数据进行实时脱敏处理,不污染数据库原始数据。
策略配置维度:
- 支持按源 IP、请求路径、请求方法、Header、Query 参数、用户账号等多条件组合设置脱敏规则;
- 内置 41 种数据类型的识别与脱敏策略,覆盖手机号、身份证、银行卡等常见敏感类型;
- 支持基于标签自定义识别规则,适配细分业务场景。
边界控制机制(解决前述三类问题):
| 问题场景 | 技术对策 |
|---|---|
| 编辑回显被脱敏覆盖 | 自动识别并跳过 HTML <input> 标签内的回显数据 |
| POST 写入被污染 | 区分读写方向:查询类路径执行脱敏,提交类路径放行 |
| JS/配置文件被误脱敏 | 仅对查询返回的响应数据体进行处理,排除静态资源 |
性能基线: 在万级并发(QPS ≥ 10K)下,平均延迟控制在 20ms 以内,不构成业务响应瓶颈。
第二层:文件级动态脱敏
核心能力: 对服务端返回的文档类文件正文进行实时脱敏,不修改文件元数据(作者、修改时间等)。
支持格式:
- 文本类:HTML、TXT、XML、JSON、CSV
- 文档类:DOC、DOCX、XLS、XLSX、PDF
技术实现路径:
- 原始文件无论存储在 OSS、本地磁盘还是数据库 BLOB 字段,均以流式方式读取;
- 在内存中完成敏感字段的识别与遮盖,脱敏后的文件流实时返回客户端;
- 源文件保持不变,不产生中间态文件,避免二次存储带来的数据泄露风险。
管控粒度扩展: 除通用策略外,支持按文件类型(如仅对 PDF 和 Excel 生效)、文件大小(超过指定阈值跳过脱敏以保障性能)等维度进行精细化策略组合。
第三层:图片级动态脱敏
核心能力: 对传输或下载过程中的图片进行实时脱敏处理,支持 jpg、jpeg、png、tif、bmp 等主流格式。
双重识别引擎:
- 文本类敏感区域:通过 OCR 提取图片中的身份证号、车牌号等文本信息并遮盖;
- 图像类敏感对象:通过深度学习模型识别人脸、指纹、公章等图像元素,其中 Logo 类采用样例训练集与图片比对的方式完成匹配。
脱敏方式可选:
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 色块遮盖 | 不可逆,完全隐藏 | 医疗影像中去除患者身份信息 |
| 马赛克遮盖 | 处理速度快,效果直观 | 人脸、车牌等局部隐藏 |
| 高斯模糊 | 保留大致轮廓 | 需保留朝向/姿态信息的场景 |
| 像素干扰 | 轻度处理,尽量保留原样 | 脱敏强度要求不高的场景 |
03 不止于脱敏:可追溯的闭环
动态脱敏解决了数据流出前的遮盖问题,但数据安全无法靠单一环节兜底。数据流出后的追溯能力同样关键:
- 每一次脱敏操作生成审计日志,记录"谁、何时、从哪个接口/文件、脱敏了什么类型的数据";
- 审计链路与数据流转轨迹联动,确保敏感数据在流出系统前后始终可管、可溯、可查验。
这在监管机构依据《数据安全法》《个人信息保护法》进行穿透式检查时,将成为企业自证合规的关键依据。
写在最后
从 API 字段到办公文档,从证照图片到医疗影像,数据流出系统的形态日趋多样。仅靠数据库层的静态脱敏或应用层的简单字段替换,已无法覆盖真实业务场景中的动态风险。
将脱敏能力前置到数据流出的每一个节点,在字段、文件、图片三种形态上分别建立识别与处理机制,同时辅以完整的审计追溯链路——这是一套值得参考的技术架构思路,也是在日益收紧的法律红线面前,具备可操作性的落地路径。
📌 说明: 本文讨论的技术方案为通用架构思路,文中涉及的实现细节和性能参数来自公开技术资料及行业实践总结,供读者参考借鉴。