docs: 同步 static 与 waf README 至审计后真实状态
- static: 移除/标注已禁用的 reset_password 与 yhdet 系列路由,更新 check_user 为经 db 服务查询,补充代理路由 CORS 通配例外说明 - waf: 明确 CRS 需先 _fetch_crs.sh 才生效,未拉取时 WAF 开箱无拦截能力
This commit is contained in:
1 parent
63b5243faf
commit
0348b959bb
2 files changed
+9
-11
No files matched your search
+6
-10
@@ -49,18 +49,12 @@ static :9200 (Flask + CORS)
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `POST /api/hash` | SHA256 密码哈希 |
|
||||
| `POST /api/check_user` | 检查用户是否已注册(查询 gateway 数据库) |
|
||||
| `POST /api/reset_password` | 重置用户密码(直接操作 gateway 数据库) |
|
||||
| `POST /api/check_user` | 检查用户是否已注册(经 db:8005 服务 pymsg 调用查询) |
|
||||
| `GET /api/favicon?url=` | favicon 服务端代理(dnfs 链接卡片用;SSRF 防护:仅 http/https + 内网地址拦截 + 重定向校验,512KB 上限,缓存 1 天) |
|
||||
|
||||
### yhdet OAuth 路由
|
||||
|
||||
| 路径 | 说明 |
|
||||
|------|------|
|
||||
| `GET/POST /yhdet_callback` | yhdet.top OAuth 回调,自动注册/登录并跳转 dnfs 页 |
|
||||
| `POST /api/yhdet_login` | yhdet OAuth 用户名密码登录 |
|
||||
| `POST /api/yhdet_verify` | yhdet Token 验证 |
|
||||
| `POST /api/proxy_send_code` | yhdet 验证码代理转发 |
|
||||
> 以下路由已在安全审计修复中**禁用**(源码以 `#` 注释,不再对外暴露):
|
||||
> - `POST /api/reset_password` — 无认证可接管任意账户(原 P0-1)
|
||||
> - `GET/POST /yhdet_callback`、`POST /api/yhdet_login`、`POST /api/yhdet_verify`、`POST /api/proxy_send_code` — yhdet OAuth 系列(原 P0-2/3/4、NEW-1/2)
|
||||
|
||||
### dnfs 代理路由
|
||||
|
||||
@@ -73,6 +67,8 @@ static :9200 (Flask + CORS)
|
||||
|
||||
以上 4 个 dnfs 代理路由均支持 HttpOnly Cookie 模式:当请求携带 `q4_token` Cookie 时,自动转为 `Authorization: Bearer` 头转发。
|
||||
|
||||
> **CORS 例外**:全局 CORS 使用 `[cors] allowed_origins` 白名单;但上述 4 个 dnfs 代理路由的 OPTIONS 预检由 `_cors()` 处理,返回 `Access-Control-Allow-Origin: *`(通配)。若需收紧,应按白名单改造 `_cors()`(安全审计 NEW-3 未修复)。
|
||||
|
||||
> `/whoami` 已上移至 gateway,由 gateway 直接验签 Token 返回用户身份,不再经 static 代理到 dnfs。
|
||||
|
||||
## 功能
|
||||
|
||||
+3
-1
@@ -342,7 +342,7 @@ WAF 支持透明代理 WebSocket 连接(如 aibox 的 WebSocket 接口)。
|
||||
- CSP 仍含 `'unsafe-inline'`(为兼容 forgot.html 与 games/*.html 的内联脚本),待前端清理后可收紧。
|
||||
- HSTS 已启用(半年期,不含子域),站点全量 HTTPS 覆盖后可按需收紧。
|
||||
- logclient 日志推送每次新建 TCP 短连接,高并发拦截场景可能产生较多 TIME_WAIT;db 地址硬编码 `127.0.0.1:8005`,不支持环境变量配置。
|
||||
- **默认规则全部注释**:`rules/local/custom.conf` 中自定义规则默认注释,需手动取消注释或拉取 OWASP CRS 后才有实际拦截效果。启动时无 warning 提示。
|
||||
- **默认规则全部注释**:`rules/local/custom.conf` 中自定义规则默认注释,需手动取消注释或拉取 OWASP CRS 后才有实际拦截效果。启动时无 warning 提示。**注意:CRS 规则目录不入库,需先在部署机执行 `_fetch_crs.sh`;未拉取 CRS 时 WAF 开箱无拦截能力。**
|
||||
- 缺少 SIGINT/SIGTERM 优雅关闭,进程终止时进行中的请求被暴力中断,logclient 队列中未发送的日志可能丢失。
|
||||
- 标准日志(`log.SetOutput`)被静默到 `io.Discard`,net/http 的 panic 堆栈和 TLS 错误不可见。
|
||||
|
||||
@@ -355,6 +355,8 @@ WAF 支持透明代理 WebSocket 连接(如 aibox 的 WebSocket 接口)。
|
||||
- **feat**: `tuning.conf` 独立于自动生成的 `crs/coraza.conf`,重跑 `_fetch_crs.sh` 不会覆盖调优配置
|
||||
- 校验:SQLi / XSS / 路径遍历 / 命令注入均命中 949110 拦截,正常请求放行
|
||||
|
||||
> **⚠️ 生效前提**:CRS 规则目录 `rules/crs/` 被 `.gitignore` 排除,不入库。**必须先在某台机器上执行 `bash _fetch_crs.sh` 拉取 CRS 规则**,`crs/coraza.conf` 存在后 engine 才会自动加载并启用自动拦截。若未拉取 CRS,实际生效的仅有 `custom.conf`(默认全注释)+ `tuning.conf`(仅 setvar),**WAF 开箱无拦截能力**。部署时请务必先拉取 CRS 或启用 `custom.conf` 中的兜底规则。
|
||||
|
||||
### v1.2(2026-08-01)— WebSocket 支持 + 修复
|
||||
|
||||
- **feat**: WebSocket 透明代理支持,`responseRecorder` 实现 `http.Hijacker` 接口
|
||||
|
||||
Reference in new issue
Block a user