feat(auth): 流代理升级短时签名 URL——?exp=&sig=(HMAC 派生 10 分钟有效)替代裸 ?key=,秘钥不再落入 URL/日志

This commit is contained in:
snowy-yang committed 2026-10-02 20:39:25 +08:00
1 parent 415a04dea8
commit cf0874fc15
5 files changed
+78 -21

No files matched your search

+3 -3
View File
@@ -81,11 +81,11 @@ pnpm typecheck # 仅类型检查,不运行
设置环境变量 `AUTH_KEY` 后,**全部路径**(含文档页、健康检查、不存在的路径)都要求调用秘钥——未授权请求统一返回 401,不暴露 404/401 差异,防止接口被扫描探测。未设置则不鉴权。
```
X-Server-Key: <AUTH_KEY> # 统一验证头
?key=<AUTH_KEY> # 仅 /stream/* 流代理接受(播放器拉流无法带自定义头)
X-Server-Key: <AUTH_KEY> # 统一验证头(全部路径)
?exp=&sig= # 仅 /stream/* 流代理:短时签名(/url 返回的流地址自动附带)
```
启用鉴权时 `/url` 返回的代理流地址(如 qs 解密流)会自动附带 `?key=`。
流代理场景(播放器/下载器直接 GET、无法带自定义头)用**短时签名**而非裸秘钥:`/url` 返回的流地址自动附带 `?exp=&sig=`(HMAC 派生,10 分钟有效)——签名泄露仅能在时效窗口内拉当条流,无法反推秘钥或调用其它接口;能带头的客户端仍可对 /stream/* 使用 X-Server-Key。
### 限流(RATE_LIMIT)