Files
Mdeical_Sur_Report/工程分析/需求分析-2026-04-20-10-14-09.md

3.3 KiB
Raw Blame History

需求分析

时间戳2026-04-20-10-14-09


1. 原始需求描述

用户提出三个核心安全问题,要求对纯前端架构下的敏感数据保护机制进行加固:

  1. storage.ts 中 XOR 加密硬编码静态密钥 → 已知明文攻击风险
  2. API_KEY_CODES 字符码数组混淆 → API 密钥客户端暴露与盗刷风险
  3. ADMIN_DISABLE_AUTH_KEY 明文硬编码 → 垂直越权漏洞

用户给出的妥协方案方向(鉴于纯前端限制):

  • 问题1改用 Web Crypto API (AES-GCM) + 环境变量注入密钥
  • 问题2剥离前端密钥还原逻辑至少移入构建阶段环境变量
  • 问题3用 SHA-256 哈希替代明文常量比对

2. 需求拆解

序号 子需求 涉及文件 优先级
1 弃用 XOR 加密,改用 Web Crypto API AES-GCM src/utils/storage.ts P0
2 密钥从硬编码改为构建时环境变量注入 vite.config.ts, .env.example P0
3 兼容旧 XOR 加密数据的自动迁移读取 src/utils/storage.ts P0
4 删除 API_KEY_CODES 硬编码字符码数组 src/utils/storage.ts P0
5 默认 API Key 改为从环境变量读取 src/utils/storage.ts, vite.config.ts P0
6 ADMIN_DISABLE_AUTH_KEY 改为 SHA-256 哈希比对 src/pages/UserManage.tsx P0
7 将源码中明文授权码替换为环境变量哈希值 .env.example, vite.config.ts P0
8 修复 UserManage.tsx 中原生 alert/confirm 使用 src/pages/UserManage.tsx P1

3. 影响范围评估

3.1 需要修改的文件

  • src/utils/storage.ts — 加密机制重构、API Key 来源变更
  • src/pages/UserManage.tsx — 授权码哈希比对、alert/confirm 替换
  • vite.config.ts — 新增环境变量注入
  • .env.example — 新增必需环境变量模板

3.2 潜在风险点

  • 数据迁移兼容性:旧版本用户 localStorage 中的 systemSettings 仍用 XOR 加密,必须支持双轨读取(先尝试 AES-GCM 解密,失败再回退 XOR
  • Web Crypto API 异步性storage.get 当前为同步接口AES-GCM 解密为异步操作,需调整接口或设计异步包装
  • 环境变量缺失导致构建失败:若用户未配置新环境变量,构建产物中密钥将为空字符串
  • SHA-256 哈希盐值:若仅做简单 SHA-256彩虹表仍可攻击需引入盐值

3.3 是否涉及数据迁移

  • 是。旧 systemSettings 的 XOR 加密数据需兼容读取,新写入全面使用 AES-GCM。

4. 验收标准

  • npm run lint 无类型错误
  • npm run build 构建成功
  • storage.ts 中不再出现任何硬编码密钥字符串
  • UserManage.tsx 中不再出现明文授权常量
  • 旧版本 XOR 加密的 systemSettings 仍能被正确读取(向后兼容)
  • 新写入的 systemSettings 使用 AES-GCM 加密
  • 默认 API Key 从环境变量注入,源码中无字符码数组
  • 禁用管理员的授权校验使用 SHA-256 + 盐值比对
  • UserManage.tsx 中原生 alert/confirm 全部替换为自定义 UI 或至少移除硬编码明文提示

5. 关联历史需求

无直接关联历史需求。但需遵守 AGENTS.md 第 5.6 节数据迁移规范、第 5.7 节禁用原生 alert/confirm 规范。