admin-review-progress.md 3.3 KB

管理后台 review 进度(2026-10-21)

范围与证据

后台候选HTTP方法清单:docs/admin-route-inventory.json,共945项。脚本工具仅基于源文件/注解邻域识别,包含需人工确认项;UNREVIEWED不等于有漏洞,注解存在也不等于已审计。 重跑:python tools/admin-review/inventory.py。

本轮明确修复

  • 先前补丁两处 CmsUserMapper 包路径写错,修正为 com.cyksj.mapper.manage.cms.CmsUserMapper。此前未编译通过,不能声称原补丁可直接发布。
  • 后台微信回调不再接受任意Base64 state;改为随机UUID、Redis服务端保存跳转地址、5分钟有效、setNx一次性消费保护。
  • 回调地址必须HTTPS且精确匹配配置中的origin;拒绝用户信息、fragment、伪后缀域名及非允许端口。
  • 微信openId为空直接拒绝;unionId为空不再查询空值账户,防止错误匹配管理员。
  • 后台权限提供器限定login域,实时核对账户启用状态,空角色/权限列表返回空而非异常。
  • 移除解除限制接口、邮件通知接口、订单完成接口的匿名白名单;前两者只限root,订单完成要求order:edit。
  • 修正订单完成的错误提示(原来把已支付状态描述成未支付)。

必须配置/兼容变化

security.admin-login.allowed-redirect-origins:填真实管理后台origin,英文逗号分隔;例 https://admin.example.com。为空时后台微信登录拒绝,短信登录不受此项影响。不要填写前台公共域名或允许任意子域。回调state格式变化,发布后已有扫码授权需重新发起。 邮件通知/解除限制旧自动化客户端需迁移为可信后台认证,不再匿名调用;order:edit须在真实权限表确认并授权,不能凭角色名自动放行。 微信token仍沿用现有前端协议放在跳转查询参数里,彻底移除URL token需要前端和后端一同迁移;本轮仅限制其目的地和state来源。OAuth绑定浏览器会话、防登录CSRF仍需进一步验证。

验证结果

独立编译并运行 AdminRedirectPolicy + RedirectPolicyCheck,10个允许/拒绝用例通过。 git diff --check通过。完整Maven编译、登录集成和退款/加余额测试尚未完成;未操作生产数据库或执行真实资金请求。

尚未完成,按优先级继续

  1. 加余额持久幂等键、事务内流水一致性、超时重试验证。
  2. 退款支付渠道幂等、锁超时并发、回调真实性及重放防护。
  3. 兑换码/优惠券领取消费并发、越权与历史数据迁移。
  4. 其余匿名白名单、企微员工Cookie身份、通用系统配置读取及修改范围。
  5. 全部后台接口的数据范围/字段白名单/SQL拼接审计。
  6. 前端全站v-html、文件上传下载、导出错误处理、金额精度、分页和表单状态;已存在的上传组件测试失败。 清单不是完成证明,不把所有945条标为已通过。

后续进展

已对齐IDEA Maven设置,依赖阻塞解除;Fastjson 1.2.84 + SafeMode已验证,全模块编译通过。余额幂等和标准退款稳定编号/金额冻结已补代码;最新专项回归19项Java测试、10项前端测试通过。详细范围及上线新增SQL见 balance-refund-reliability.md;上文未完成事项不因本轮测试全部自动关闭。