agent-Specialization/doc/phases/phase3_summary.md

35 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 3 Summary 鉴权与配额基线
## 交付成果
1. **HTTP / WebSocket 鉴权加固**
- 引入统一速率限制器与失败计数:登录/注册/文件写操作等接口按 IP/用户多维限流,同时重试上限触发临时封禁。
- 自定义 CSRF 体系:后端提供 `/api/csrf-token`,前端全局 `fetch` 包装自动附带 `X-CSRF-Token`,所有写操作在 `before_request` 校验;会话 Cookie 统一启用 `SameSite=Strict`、`Secure/HttpOnly` 并增加基础安全头。
- Socket.IO 握手新增一次性 token含 UA 指纹),连接、重连都会验证 token 并立即销毁,阻断单凭 session cookie 劫持的可能。
2. **模型 / 搜索用量配额**
- 新增 `modules/usage_tracker.py`,按用户与角色记录滑动窗口用量(普通用户:常规 50/5h、思考 20/5h、搜索 20/24h管理员 9999数据持久化在 `usage_stats.json`
- `core/main_terminal.py` 在每次模型/搜索调用前检查并递增配额,超限时直接拒绝并返回重置时间;`web_server.py` 同步向前端广播 `quota_notice`,防止静默失败。
- UI 用量面板展示实时配额、重置时间,并在输入框侧阻止超限请求;新增右上角 toast 通知提醒配额状态。
3. **界面与体验**
- Web 用量组件、新增安全 toast、自动刷新配额数据轮询 + Socket 事件),并隐藏 0 次额度的重置提示,避免噪音。
## 影响评估
- **攻击面收敛**CSRF、防爆破、Socket 凭证等基础鉴权补齐后未授权调用需要突破多重校验WebSocket 劫持和暴力破解风险显著下降。
- **可观测性/运维**:配额快照和 `/api/usage` 接口为后续差异化用户组与审计提供依据,可直观查看每类用量与重置时间。
- **用户体验**:前端能够即时获知配额状态,避免“点击无响应”,同时 toast 提醒让限额策略更透明。
## 仍待处理
- 尚未引入 CAPTCHA / MFA、异常告警、CLI API Token 等进一步的身份防护手段。
- Upload/MIME 检查、CSP/内容安全策略与更细粒度的 ACL 仍未落地。
- 配额目前只区分普通/管理员,可在下一阶段扩展“用户组 + 自定义窗口/额度”的配置中心,并联动告警系统。
## 验证
- `python3 -m py_compile web_server.py core/main_terminal.py core/web_terminal.py modules/usage_tracker.py`
- 手动验证:登录界面输错多次触发 429WebSocket 无 token 无法建立连接;浏览器抓包可见所有写请求均带 `X-CSRF-Token`
- 配额体验:普通用户 5 小时窗口内超限时前端弹出提示、API 返回重置时间5 小时后自动恢复。