2.7 KiB
2.7 KiB
Phase 3 Summary – 鉴权与配额基线
交付成果
-
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 劫持的可能。
-
模型 / 搜索用量配额
- 新增
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 通知提醒配额状态。
- 新增
-
界面与体验
- 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。- 手动验证:登录界面输错多次触发 429,WebSocket 无 token 无法建立连接;浏览器抓包可见所有写请求均带
X-CSRF-Token。 - 配额体验:普通用户 5 小时窗口内超限时前端弹出提示、API 返回重置时间,5 小时后自动恢复。