LOCAL_PROTECTION_STATUS_2026-09-14.md 6.3 KB

账号保护:本地修改状态

本文件记录上一轮默认模式调整。后续修复与最终验证见 本地修复结果。

日期:2026-09-14。本次按用户要求将默认模式改为“初代兼容”,并修复与默认启停直接相关的配置还原和模式解析问题。只修改本地源码,未连接/部署服务器、未执行数据库迁移、未批量修改任何现有账号。

前两轮是审查与复现,没有修复业务代码。以下列出的“已完成”才是本轮实际修改并验证的内容。

已完成

  1. 默认初代兼容。 新建、导入、复制以及关闭后重新开启保护,适用账号默认保存 mode=legacy。OpenAI OAuth/Setup Token 使用 session 指纹、nodejs24 TLS 模板;Anthropic OAuth/Setup Token 使用 nodejs24 TLS,保留原身份机制。并发保持原有更低限制,否则上限 16。随机代理、影子账号、API Key 及其他不适用类型继续使用通用并发保护。
  2. 前后端默认入口一致。 后端不传 mode 的预览/应用、前端 API 默认参数及编辑弹窗默认选择都改为 legacy;按钮排在策略列表首位并标注“默认”。仍可显式选择 mode1 或其他现有策略。
  3. 保留存量选择。 已开启的 mode1/mode2/其他策略不会因新默认值或普通读取而转换;重复调用开启接口保持当前开启策略。历史缺少 mode 的标记仍按原规则读取,避免升级解释漂移。
  4. TLS 还原修复。 新应用策略保存完整受管配置快照;还原会恢复原 TLS 开关和自定义模板 ID。历史稀疏快照中未记录的字段不再被无条件删除。已修复“原来 TLS=true,还原后仍为 false”及“还原 legacy 丢失自定义模板 ID”两条复现。
  5. generic 识别修复。 持久态 generic 不再被改写为 mode1;随机代理账号改为固定代理后,可以显式选择 mode1,正常路径不再误报“模式一配置无效”。
  6. 未知策略拒绝。 未知的非空模式返回 400 / UNKNOWN_PROTECTION_STRATEGY,不会自动应用默认策略。只有省略模式才使用新默认值。

说明:TLS 模板配置仍受全局 TLS 开关和插件传输控制。本次没有开启服务器的全局开关,也没有证明真实上游握手或模型效果。如果历史缺陷已经删除了某账号的原始模板信息,本次修复不能凭空恢复丢失的数据,需依据此前备份核对。

仍未解决

问题 当前状态与下一步
原生 WSS 身份不一致 仍可复现,包括初代兼容。 mode1 的头/体设备 ID 不同;legacy/mode2 未完整应用声明身份。需要统一 HTTP/WSS/测试出站的身份计划并覆盖首帧及后续帧。默认值修改不能替代此修复。
策略切换非原子 仍可复现。 先提交还原再提交新策略;第二步失败会留下保护关闭状态。需要单事务及版本冲突检查,缓存只发布最终状态。
无标记旧快照覆盖新保护 仍可复现。 最终合并函数依据传入对象跳过读取已启用策略。需要以锁定后的数据库状态为准。
mode2 与批量保存保护不统一 mode2 普通编辑仍可复现;SQL 批量遗漏为源码已确认。 需要统一全部策略的受管字段集合。
平台适用条件未强制执行 仍可复现。 最小兼容等显式策略仍能应用到不支持的平台。此次未知模式已拒绝,但不等于完整资格校验已完成。
TLS 预览不显示全局覆盖原因 可观测性缺口仍在。 账号预览可以显示 nodejs24,实际因全局关闭而走标准传输。需区分配置目标、有效计划和实际观测。
智能测试缺少执行策略快照 仍只保存保护布尔值和题目配置,不能完整重现实际策略/TLS/代理/并发。初代身份在智能测试入口的接入范围也需要进一步统一验收。

此外,项目总审查中的普通管理员系统操作权限、管理账号资源权限、定制站更新源、Live 零费用结算、缺失安全检查脚本及 CI 数据库覆盖问题,本轮均未修复。前次全量测试中与本任务无关的失败也不宣称已经解决。

验证结果

  • 后端:保护/模式一/指纹/默认值/账号创建复制相关定向测试在 service、repository、admin handler 三个包以 -tags=unit 执行通过。
  • 后端:service/repository/admin handler 的 go vet 通过;go build ./cmd/server 通过,输出到本机临时目录。
  • 前端:账号相关 27 个文件、369 项测试通过,包含普通编辑、新建、批量修改、保护组件/API 和语言键检查。
  • 前端:vue-tsc --noEmit、改动文件 ESLint、Vite 生产构建通过,构建用时 18.27 秒,输出到本机临时目录。
  • 专项复现:原 14 个场景由 2 通过/12 失败变为 6 通过/8 失败。四条旧失败转为通过:标准策略 TLS 开关还原、legacy 自定义模板还原、generic 转 mode1、未知策略拒绝。剩余失败如上表,未通过修改断言掩盖。
  • 复验日志:after-legacy-default.log。模式一对照用例已改为显式选 mode1,防止默认改变后测试目标也跟着改变;原始修复前日志保留。
  • 本次没有真实 PostgreSQL 集成/竞态验收,也没有访问真实上游。不能将定向回归和编译通过表述为全项目全量通过。

主要改动文件

  • backend/internal/service/account_protection.go:默认创建/启用策略改为 legacy,保留不适用类型的通用保护。
  • backend/internal/service/account_anti_degrade.go:默认选择常量、持久态与请求默认值分离、未知值拒绝、完整快照及兼容旧快照的还原。
  • backend/internal/service/anti_degrade_strategies.go:初代兼容默认描述与非诊断默认定位。
  • frontend/src/utils/accountProtection.ts:前端共享默认模式常量。
  • frontend/src/api/admin/accounts.ts、frontend/src/components/account/EditAccountModal.vue:API 默认值、预选、排序及默认标注。
  • 对应 Go/Vue 测试,以及当前文档和专项复验材料。

现有 Git 仓库尚无提交,本次没有创建提交、发布包或服务器版本。后续如要部署,应先处理上述高优先级问题并完成独立数据库和真实调用验收。