背景
当前多个高风险操作已经在 UI 和文档中要求二次/三次确认,但从后端命令接口角度看,部分执行函数仍主要依赖前端完成确认后再调用。例如 MySQL 修复、空间搬家、Junction、C 盘扩容、服务操作等。
如果前端逻辑 bug、旧页面入口、白屏恢复后的异常调用或未来 Codex 改动绕过确认,后端缺少统一的强制确认令牌校验。
问题性质
这是安全架构问题,不一定是当前用户可直接触发的 bug,但属于高危功能必须补齐的后端安全门禁。
影响范围
至少覆盖:
- MySQL 修复中心:服务注册、启动、系统库修复、Data 备份。
- C 盘扩容执行。
- 空间搬家。
- Junction 创建。
- 桌面/下载归档执行。
- 用户级环境变量写入与恢复。
- 数据库服务启动/停止/重启。
- Docker / WSL 管理动作。
- 结束进程。
修复目标
建立统一后端确认令牌机制:
预览计划 → 风险声明 → 用户确认 → 后端签发 confirmation token → 执行函数校验 token → 执行后 token 失效
功能要求
- 新增确认令牌结构。
- token 绑定:
- action_id
- plan_id
- risk_level
- created_at
- expires_at
- plan fingerprint
- required confirmation level
- token 只能使用一次。
- token 过期后拒绝执行。
- token 与当前计划不匹配时拒绝执行。
- 高危操作必须在后端校验 token。
- Critical 操作必须校验三次确认完成状态。
- 需要备份的操作必须校验 backup receipt 或 backup manifest。
建议接口
create_risk_confirmation(action_id, plan_id, confirmation_payload) -> ConfirmationToken
validate_risk_confirmation(token, action_id, plan_id, required_level) -> Result<(), String>
consume_risk_confirmation(token)
三次确认载荷建议
Critical 操作要求至少包含:
{
"readRisk": true,
"backupConfirmed": true,
"typedAcknowledgement": "我已知晓风险并确认执行"
}
MySQL 可使用更具体文案:
C 盘扩容可使用:
禁止事项
- 不允许前端只弹窗确认后直接调用高危 execute。
- 不允许 token 长期有效。
- 不允许 token 跨 plan 使用。
- 不允许 backup 失败时生成 Critical token。
- 不允许危险操作在后端只靠布尔值确认。
测试要求
新增测试:
- 没有 token 执行 Critical 操作 → 拒绝。
- token 过期 → 拒绝。
- token 与 plan_id 不匹配 → 拒绝。
- token 被使用一次后再次使用 → 拒绝。
- 未完成三次确认 → 拒绝。
- 需要备份但没有备份 receipt / manifest → 拒绝。
- Medium/High/Critical 不同级别按规则校验。
- 旧的只读诊断不需要 token。
验收标准
- 所有高危执行函数都有后端安全门禁。
- 前端确认不能成为唯一安全边界。
- MySQL / Junction / 空间搬家 / 分区扩容至少完成 token 接入。
cargo test --all-targets 通过。
npm run build 通过。
- 文档说明首次安全声明、页面说明、操作确认、后端 token 的关系。
背景
当前多个高风险操作已经在 UI 和文档中要求二次/三次确认,但从后端命令接口角度看,部分执行函数仍主要依赖前端完成确认后再调用。例如 MySQL 修复、空间搬家、Junction、C 盘扩容、服务操作等。
如果前端逻辑 bug、旧页面入口、白屏恢复后的异常调用或未来 Codex 改动绕过确认,后端缺少统一的强制确认令牌校验。
问题性质
这是安全架构问题,不一定是当前用户可直接触发的 bug,但属于高危功能必须补齐的后端安全门禁。
影响范围
至少覆盖:
修复目标
建立统一后端确认令牌机制:
功能要求
建议接口
三次确认载荷建议
Critical 操作要求至少包含:
{ "readRisk": true, "backupConfirmed": true, "typedAcknowledgement": "我已知晓风险并确认执行" }MySQL 可使用更具体文案:
C 盘扩容可使用:
禁止事项
测试要求
新增测试:
验收标准
cargo test --all-targets通过。npm run build通过。