前言¶
在 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 为准):
- 不扫二进制/图片 —— 截图里的身份证、PDF 内嵌表格等扫不到。
- 不查 .git 历史 —— 仅当前工作区;历史上已提交过的敏感数据需另做历史清理或专用工具。
README 还强调:本插件是工具,使用者须遵守所在地区法律法规,对使用造成的后果自行承担责任。
小结¶
dsh-data-scan 用校验位和边界规则在文本仓库里找身份证、银行卡、手机号等 PII,并避免在报告中回显完整原值。安装命令以 @deepwhale-cn/dsh-data-scan 为准;日常从当前目录扫描到 HTML 报告,README 三条命令即可复现。