安全认证数据接口

按插件提供的机器可读安全审查结果——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。

等级条件含义
criticalverdict = fail阻断级严重发现(密钥 / 网络外传 / 破坏性 / 挖矿)
mediumverdict = warn && critical > 0非阻断严重发现(动态执行 / shell / 安装脚本 / 混淆)——展示为需注意
warningverdict = warn && critical = 0仅警告级发现
passedverdict = pass无严重/警告发现(允许 info)
outdatedscan.commitSha ≠ plugin.latestCommitSha && scannedAt 超过 7 天仓库有新提交且扫描已超过 7 天,结果不再代表当前代码
stalepassed && scannedAt 超过 30 天上次通过扫描已超过 30 天
unscanned无扫描记录未扫描(新插件或扫描失败)
字段语义
字段类型语义
verdictpass|warn|fail扫描结论(见等级表)
countsobject各级发现数量:critical / warning / info
criticalByCategoryobject严重发现按类别分组(shell、code-exec、secrets、network、destructive、obfuscation、install、mining)
findingsarray逐条发现——ruleId / severity / category / file / line / snippet,每插件最多 12 条
filesScannedinteger扫描的源文件数(上限 15)
scannerVersionstring | null规则集内容指纹(如 dsh-static:xxxxxxxx)——标明本次扫描是在哪套规则下完成的:同指纹 = 同规则集,消费者可凭它对齐或复现结果。旧记录(此字段落盘前扫描的)可能为 null,由每日全量重扫回填
rulesCheckedinteger | null规则集中实际对至少一个文件执行过匹配的条数(纯文档仓库会跳过 skipInDocs 规则,可能少于规则库总数)。与 scannerVersion 配套,让覆盖面可感知。旧记录可能为 null
scannedAtstring (ISO)扫描时间
commitShastring | null扫描时的 HEAD commit SHA——结果仅对该版本有效
pkgVersionstring | null插件自身版本(从 package.json 提取)
pkgDshboolean是否声明 dsh 清单(package.json 的 dsh 字段)
latestCommitShastring | null插件市场记录的最新 HEAD(update-plugins 更新,用于 outdated 判定)
latestReleaseTagstring | 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):

curl https://www.dsh.so/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。新增字段见 更新日志。

这页有帮助吗?