dsh-data-scan:带校验位的敏感数据发现

前言

在 DSH 或普通仓库里,测试数据、样例配置和日志片段很容易混进真实个人信息。只靠肉眼或「正则扫一遍」,订单号、时间戳、哈希片段常被当成身份证号或银行卡号,误报多了工具就会被弃用。下面介绍 feely0208 维护的 DSH 插件 dsh-data-scan(npm 包名 @deepwhale-cn/dsh-data-scan):在代码与配置文本中检出身份证、银行卡、手机号等,并用国标校验位或 Luhn 等规则过滤,降低误报;报告里不输出完整原值,只给出文件位置、类型与打码片段。

这是什么

dsh-data-scan 归类为 admin-security,定位是「敏感数据发现」——扫出代码和配置里的身份证、银行卡、手机号,带校验位验证,目标是不误报。仓库:https://github.com/feely0208/dsh-data-scan。社区目录页:https://www.skillhub.cn/plugins/feely0208/dsh-data-scan。当前 package 版本为 0.1.1,许可证 MIT,依赖 Node >=18,DSH 引擎要求 >=0.1.0-rc.6。

与同维护者的密钥类扫描(如 dsh-bundle-cn-skills 所涉能力)不重叠:那边查密钥,这边查个人信息(PII)。

检出范围与校验方式

README 用表格说明了级别、类型与校验逻辑,核心如下。

级别 类型 校验
高 身份证号 GB 11643-1999 加权校验位
高 银行卡号 Luhn 算法
中 手机号 号段 + 边界断言
低 邮箱 结构匹配(提示性质)

实现思路是「结构 + 校验位」双重验证,而不是纯正则。文档中的对比例子:校验位正确的 18 位身份证、Luhn 通过的卡号会报;改一位导致校验失败的不报;长度或边界不像手机号的 18 位数字串不报。

输出与安全设计

扫描结果永不含原值,只报「文件:行 + 类型 + 打码片段」。README 明确说明:若把完整敏感值写进报告,扫描工具本身会变成泄露源,因此输出侧做了脱敏。

安装

在 DSH 环境中可按 Web 配置档安装;也可以不装插件、直接用 CLI。

dsh plugin --profile web add @deepwhale-cn/dsh-data-scan
# 或纯 CLI
npx @deepwhale-cn/dsh-data-scan

安装或运行前,建议自行查看仓库源码与 MIT 许可证。插件以当前 dsh 进程权限访问工作区文件,权限范围与你在本机运行 DSH 时一致。

典型用法

安装后,命令行入口为 dsh-data-scan(见 package.json 的 bin 字段)。README 给出的用法如下。

dsh-data-scan                 # 扫当前目录
dsh-data-scan --demo          # 看检出效果
dsh-data-scan --html r.html   # 生成 HTML 报告

--demo 适合在接入 CI 或团队规范前先确认规则与输出格式; --html 便于把结果交给合规或代码评审流程归档。官方 README 附有报告、演示模式与规则说明的示意图(deepwhale.org.cn 插件资源路径)。

边界与适用场景

适合谁:需要在提交或开源前快速检查工作区文本里是否混入 PII 的团队;与密钥扫描、环境审计等插件搭配时,属于「数据与凭据」链路上的一环(维护者将其列入深鲸网安守护系列中的敏感数据项)。

明确不做的能力(以 README 为准):

  1. 不扫二进制/图片 —— 截图里的身份证、PDF 内嵌表格等扫不到。
  2. 不查 .git 历史 —— 仅当前工作区;历史上已提交过的敏感数据需另做历史清理或专用工具。

README 还强调:本插件是工具,使用者须遵守所在地区法律法规,对使用造成的后果自行承担责任。

小结

dsh-data-scan 用校验位和边界规则在文本仓库里找身份证、银行卡、手机号等 PII,并避免在报告中回显完整原值。安装命令以 @deepwhale-cn/dsh-data-scan 为准;日常从当前目录扫描到 HTML 报告,README 三条命令即可复现。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜