前言¶
在 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 三條命令即可復現。