VWCG-1237 管理员强密码、首次改密及会话失效

增强版历史草案,已被最小整改方案替代

8h预计工时
4实施切片
2新增数据库字段
当前审核真源:VWCG-1237-CODE-01-minimal-password-remediation.html。本页不再作为本次弱口令漏洞实施依据。

目标结果

核心数据与契约

设计说明
must_change_pwd新建/管理员重置写1;用户成功改密写0;历史账号升级默认0。
session_version默认1;任何改密/重置操作递增;Token版本与数据库不一致即失效。
登录 code=2统一返回 password_change_required 和 FIRST_LOGIN/EXPIRED,不签发普通业务Token。
改密接口复用 /p/login/changeExpiredPwd,成功后更新密码、清首次标记、递增会话版本并要求重新登录。

依赖顺序

数据库字段 → 统一 PasswordPolicyService → 新建/重置/自助改密状态 → 登录首次改密判断 → Token会话版本校验 → PC前端交互 → PHPUnit + HTTP + 构建 + 发布复测

四个实施切片

1. 数据库与统一密码策略(2h)

新增两个字段和 PasswordPolicyService;锁定12位、大小写/数字/特殊字符、账号包含、弱口令和连续字符规则。

2. 新建、重置和自助改密闭环(2h)

新建/还原设首次改密;自助改密清标记;所有路径更新密码时间并递增会话版本。

3. 登录与旧会话失效(2h)

首次改密优先于密码到期和二次验证码;Token带版本,每次解析与账号当前版本比较。

4. PC前端、契约与回归(2h)

同步登录、首页改密、账号管理页面,更新OpenAPI/Apifox并完成安全回归。

主要修改文件

区域文件
策略application/common/service/PasswordPolicyService.php
后端application/p/logic/Login.php、User.php及对应控制器/校验器
前端public/static/src/view/login.vue、home.vue、system/accountSetting.vue
数据正式版本SQL:must_change_pwd、session_version
测试tests/Security/SecurityFixesTest.php、tests/apifox/http/、OpenAPI/Apifox

发布门禁

  1. PHPUnit、HTTP安全回归、PC lint/build全部通过。
  2. 升级SQL执行和字段回读成功。
  3. 部署后全部旧后台Token失效,用户重新登录。
  4. 新吴区管理员完成重置,首次改密正常。
  5. 普通登录、密码到期、二次验证码、失败锁定无回归。
  6. 制品SHA、SQL、部署时间、复测和回滚点齐全。

当前状态:方案待评审,尚未实施代码。