Skip to content

Security Model

DNTOF edited this page Sep 24, 2026 · 9 revisions

安全模型

对齐 2.6.0 PEAK(main / tag v2.6.0_PEAK)。责任边界见仓库 SECURITY.md。

传输

插件自身全部 明文:HTTP、ws:// 控制与语音。对外暴露须自行加 HTTPS/WSS 与网络隔离。不要对公网裸奔明文端口。


凭据

凭据 用途
verify_token 数据口:/get_sl_data、/plugins/adapted 等
API Key 控制 HTTP/WS、语音、事件订阅

verify_token fail-closed

  • 出厂默认 your_secret_token、空、或未通过强度校验(长度 ≥8 且同时含大写/小写/数字/特殊符号)时:Enable 打 Error 并关闭数据口;若控制面也未启用则不绑定 HTTP。
  • 数据口优先:Authorization: Bearer / X-SLDataAPI-Token / X-SLDataAPI-Verify-Token。
  • ?token= 仍兼容但已弃用。

API Key

  • 磁盘仅存指纹;明文只在 apikey create 时写入一次性文件(命令 response 不含明文)。
  • control_token 已废弃:若仍配置,启动警告后忽略,不作为鉴权。
  • 锁定表与只读数据分表。
  • 401 = 未认证 / Key 错;403 = Key 对但被拒绝。

远程硬拒绝

  • sldataapi / slda 全子命令不能经 /control/console/command 或控制 WS 执行。
  • Key CLI(create / revoke / list)在远程执行上下文一律拒绝;仅本地控制台。

审计 ACL(duty)

  • duty 模板默认不授予 /control/audit/list。
  • 即便 override 打开,非 admin 也只能看到自己这条的请求体;其他 Key 的写操作 payload 显示 [redacted]。
  • 落盘会打码常见密钥字段 / Bearer 前缀。

自动更新

  • 当前程序集未强签名时:拒绝自动安装(即使 auto_update_install: true),只打日志。
  • 已签名构建要求下载文件公钥令牌与当前一致。
  • 启动 + 默认 72h 静默复查;跳过 GitHub 上标记为 prerelease/draft,以及 tag 名含 beta / alpha / rc / preview / dev 等标识的版本(避免装到非正式包)。

WebDAV

  • 可选;默认关。启用后定稿 zip 以 HTTPS PUT + Basic Auth 上传。
  • 只接受 https://;http:// 校验失败并跳过。
  • 密码与 Authorization 头不写日志。

详见 HTTP-API、Configuration。


与 2.5 的差异(摘要)

2.5 2.6.0 PEAK
control_token 控服 API Key + ACL
扁平控制路径 RA 对齐路径(无别名)
无远程硬拒绝 Key CLI 远程一律拒绝 sldataapi / Key CRUD

完整旧接口见 Old-HTTP-API。


DoS 与资源上限

层 措施
HTTP Slowloris 总时限 15s;并发 64;头 16KB;体 64KB
控制 WS 分片组装 30s;空闲 90s;单消息 256KB;连接 8;单连接并发 call 4
语音 WS 连接 8;握手 10s;发送 Poll + 超时,避免主线程卡死

文件端点(若启用 file_root)

  1. 路径限定在 file_root 内(防 ..)
  2. Windows 系统目录禁读写
  3. 扩展名白名单(yml/json/txt 等)
  4. 禁止游戏数据目录与插件自身配置目录

使用建议

  • control_enabled 默认 关;非必要不启。
  • 必须设置强随机 verify_token(勿用出厂默认)。
  • 按需要分多把 API Key;控制面凭据泄露即等同本机控制台权限。
  • /control/console/command 等同本机控制台——凭据泄露即沦陷。
  • 对外请反代 HTTPS + 限制来源。

Clone this wiki locally