安全认证数据接口
按插件提供的机器可读安全审查结果——verdict、counts、逐条发现、扫描状态等级与版本绑定。全部为静态、缓存、可免费引用的数据。
| URL | 说明 | 更新 |
|---|---|---|
/data/security-scan.schema.json | 扫描记录格式对应的 JSON Schema——机器可读契约(同时校验内部数据文件) | 随字段新增更新 |
/artifact/@作者/插件名.json | 单插件 JSON——派生扫描状态 + 完整扫描记录(verdict / counts / 类别 / findings)+ 版本信息 | 每日 01:10 北京时间(17:10 UTC) |
/plugins-index.json | 插件市场轻量摘要——全部插件的状态 / 风险等级 / 计数(不含逐条 findings 明细)。文档:/zh/data/plugins-index/ | 每日 01:10 北京时间(17:10 UTC) |
JSON 接口支持跨域读取:Access-Control-Allow-Origin: *,无需 API Key 或注册。无扫描记录的插件返回 404。
由扫描 verdict 通过 deriveBadgeState(src/scripts/badge-state.ts)派生。判定顺序:outdated → critical → medium → warning → stale → passed。
| 等级 | 条件 | 含义 |
|---|---|---|
critical | verdict = fail | 阻断级严重发现(密钥 / 网络外传 / 破坏性 / 挖矿) |
medium | verdict = warn && critical > 0 | 非阻断严重发现(动态执行 / shell / 安装脚本 / 混淆)——展示为需注意 |
warning | verdict = warn && critical = 0 | 仅警告级发现 |
passed | verdict = pass | 无严重/警告发现(允许 info) |
outdated | scan.commitSha ≠ plugin.latestCommitSha && scannedAt 超过 7 天 | 仓库有新提交且扫描已超过 7 天,结果不再代表当前代码 |
stale | passed && scannedAt 超过 30 天 | 上次通过扫描已超过 30 天 |
unscanned | 无扫描记录 | 未扫描(新插件或扫描失败) |
| 字段 | 类型 | 语义 |
|---|---|---|
verdict | pass|warn|fail | 扫描结论(见等级表) |
counts | object | 各级发现数量:critical / warning / info |
criticalByCategory | object | 严重发现按类别分组(shell、code-exec、secrets、network、destructive、obfuscation、install、mining) |
findings | array | 逐条发现——ruleId / severity / category / file / line / snippet,每插件最多 12 条 |
filesScanned | integer | 扫描的源文件数(上限 15) |
scannerVersion | string | null | 规则集内容指纹(如 dsh-static:xxxxxxxx)——标明本次扫描是在哪套规则下完成的:同指纹 = 同规则集,消费者可凭它对齐或复现结果。旧记录(此字段落盘前扫描的)可能为 null,由每日全量重扫回填 |
rulesChecked | integer | null | 规则集中实际对至少一个文件执行过匹配的条数(纯文档仓库会跳过 skipInDocs 规则,可能少于规则库总数)。与 scannerVersion 配套,让覆盖面可感知。旧记录可能为 null |
scannedAt | string (ISO) | 扫描时间 |
commitSha | string | null | 扫描时的 HEAD commit SHA——结果仅对该版本有效 |
pkgVersion | string | null | 插件自身版本(从 package.json 提取) |
pkgDsh | boolean | 是否声明 dsh 清单(package.json 的 dsh 字段) |
latestCommitSha | string | null | 插件市场记录的最新 HEAD(update-plugins 更新,用于 outdated 判定) |
latestReleaseTag | string | null | 最新 GitHub release tag(插件发布版本) |
latestCommitSha 和 latestReleaseTag 是 plugins.json 中的插件级元数据,为方便使用也在单插件 JSON 中暴露;流水线回填期间可能为 null。
边界说明:findings 行(规则 / 文件 / 行号 / 片段)是单插件证据——让作者看清是什么触发了判定并可以申诉;它描述的是该插件自己的代码,不是扫描器规则的实现方式。规则实现保持私有不公开,只发布规则集指纹(scannerVersion)。
扫描结果仅对扫描时的 commitSha 版本有效。扫描后 7 天内的新提交不会触发 outdated(评级仍然有效);若仓库持续有新提交且扫描已超过 7 天,状态才降级为 outdated,直到每日流水线重新扫描——防止「认证后投毒」。
扫描结论由确定性静态规则生成,可能出现误报——规则误判、扫描对象(basis)不对或版本过旧。插件作者可通过 反馈页 提出申诉(作为可追踪 issue 记录,无需 GitHub 账号)。请附上插件 id、该次扫描的 commitSha、命中的 ruleId 与简要理由;维护者复核后会安排重新扫描。
查询一个插件(或在浏览器打开 /artifact/@dsh-so/dsh-code-security.json):
安全扫描数据由 dsh.so 流水线从公开 GitHub 仓库聚合:增量发现每 2 小时一次(北京时间偶数小时 02:00-22:00),手动投稿在北京时间奇数小时 03:00-23:00 处理,全量刷新每日北京时间 00:00,安全扫描每日北京时间 01:10。字段只增不删:既有字段不会移除或改名,新增字段会同步更新 schema。单插件 JSON 与 schema 可免费引用,需注明来源 dsh.so。新增字段见 更新日志。