技能|展示层字段脱敏与授权查看法
适用场景
系统页面要把敏感字段(金额、姓名、证件、手机、备注)显示给家人看,但默认不暴露明文,需要"点一下才临时看一眼、刷新即恢复"。触发词:展示脱敏、页面打码、金额打星、授权查看、敏感字段掩码。与 数据脱敏与跨文档安全替换(输入侧 / 送模型前脱敏)互补:那个管"出口",本技能管"屏幕显示"。
操作步骤
- 类别判定(
templates.py_sens_cat,约 L1230):按字段typ(含tail4→证件)或中文标签命中关键词清单_ID_KW/_NAME_KW/_PHONE_KW/_TEXT_KW/_MONEY_KW,分成money/name/id/phone/text/None五类。 - 掩码规则(
_mask_for,约 L1283):
- 金额 →¥****(原值经_money_safe保留在data-real,供授权查看);
- 姓名 → 首字+**(如陈**);
- 证件 / 卡号 →****+末4(如****1234);
- 手机 → 前3+****+末4(如138****5678);
- 文本 →•••。 - 默认掩码 + 授权查看(
_mask_cell,约 L1299):输出<span class="hfms-mask" data-real="明文" data-mask="掩码">+ "显示"按钮;MASK_JS(约 L1024)监听.m-btn点击 → 弹maskConfirm确认框(__hfmsReveal)→ 临时把data-mask换成data-real明文,不持久化、刷新即恢复。 - 统一入口(
_masked,约 L1309):表格 / 明细直接调_masked(label, val, typ),非敏感字段原样转义返回。 - 全站覆盖:
ledger_list/txn/budget/overview/账户明细等全部走_masked/_mask_cell(约 L1354、L1822、L2161、L3015 等),一处定义、处处生效。
注意边界
- 掩码只在展示层生效,数据库里仍是明文——导出 / 接口 / 模型上下文的脱敏另由
数据脱敏与跨文档安全替换与模型上下文脱敏接入流程负责,三处互补不重叠。 data-real走_e转义,防 XSS;明文仅在浏览器内存临时显示,不落日志、不进索引。- 授权查看是"点一下看一眼",不是"永久显示开关",符合最小暴露。
反例避雷
- 把明文直接写进 HTML 注释或
title属性"方便调试" → 右键一看就泄,等于没脱敏。 - 只在前端 JS 里打码、后端返回明文 → 抓包即得明文,形同虚设。
- 给每个页面各写一套掩码 → 规则散落、改一处漏一片;统一走
_masked才是单一可信源。
关联笔记
- [[技能|数据脱敏与跨文档安全替换]]
- [[技能|模型上下文脱敏接入流程]]
- [[技能|会话级空闲退出与看门狗加固法]]
实战战绩
2026-10-02 落地:十体系台账 + 财务六模块全站敏感字段默认掩码,实拉 /overview//txn//l/zq 等确认 金额/姓名/证件/手机/文本 五类口径齐全、授权查看弹确认框后临时明文、刷新即恢复。
版本记录
| 版本 | 日期 | 变更 |
|---|---|---|
| v1.0.0 | 2026-10-03 | 首版实战固化:_sens_cat 五类判定→_mask_for 掩码→_mask_cell 授权查看→_masked 统一入口→全站覆盖 |