B-64: 安全修复——随机初始密码与跨公司重复上传隔离

- 公司账号创建改为随机一次性初始密码,只在创建响应中显示一次,
  密码保证不等于用户名;删除「用户名即初始密码」兼容分支,继续
  强制首次登录改密。
- 跨公司相同字节文件上传只返回通用重复状态:不再返回其他公司的
  原批次 ID、银行、模板、期间、交易数或诊断;同公司重复上传的
  幂等摘要保持可用。
- 补充服务端回归测试,覆盖同公司与跨公司两个分支及随机密码;
  完整测试 85 项全绿,node --check 通过。
This commit is contained in:
腾讯WorkBuddy
2026-08-16 01:50:42 +08:00
parent 545837446c
commit 7f1a93f6a6
11 changed files with 155 additions and 58 deletions
+4 -2
View File
@@ -27,6 +27,8 @@ python server.py
数据库与原始文件默认保存在 `data/`(已加入 `.gitignore`)。上传文件按
SHA-256 内容哈希不可变保存,重复上传返回 `duplicate` 状态并复用已有批次。
同一公司重复上传返回原批次摘要;不同公司相同内容只返回通用重复状态,
不暴露其他公司的批次标识或摘要。
技术决策见 `docs/decisions/002-persistence.md`
## 登录与账号
@@ -40,8 +42,8 @@ SHA-256 内容哈希不可变保存,重复上传返回 `duplicate` 状态并
- 引导管理员及管理员创建的公司账号首次登录都必须修改密码。
- 公司、公司账号由管理员在总账端「公司与账号 → 新增公司」或
`/api/admin/companies``/api/admin/users` 动态创建;
公司账号的初始密码与登录账号相同,首次登录强制改密
(「重置密码」生成随机一次性密码)。
公司账号创建时生成随机一次性初始密码,只在创建响应中显示一次,
首次登录强制改密(「重置密码」同样生成随机一次性密码并吊销会话)。
- 会话有效期 8 小时;同一账号同一 IP 10 分钟内登录失败 5 次将被限流。
访问地址(服务默认监听 `0.0.0.0:4173`,同局域网设备把 `127.0.0.1` 换成本机局域网 IP 即可访问;可用环境变量 `APP_HOST` / `APP_PORT` 覆盖):