P6-注册接口滥用整改说明.md 1.4 KB

P6 整改说明:注册接口免登可被滥用

问题

AuthController 类级 @SaIgnore,POST /prod-api/auth/register 无需登录即可访问。若数据库 sys.account.registerUser=true,可被滥用于撞库、刷注册,并曾作为 SQL 注入入口(见 P5)。

整改措施(已落地)

# 措施 位置
1 配置层总开关 user.register.enabled,默认 false application.yml
2 Controller 最先判断配置开关,关闭则直接拒绝 AuthController.register
3 Service 二次拦截,防止绕过 Controller SysRegisterService.register
4 IP 限流:60 秒内最多 5 次 @RateLimiter
5 仍保留库开关 sys.account.registerUser 二次判断 原有逻辑
6 配套 SQL 将库开关置为 false P6-关闭开放注册.sql

生效条件(同时满足才会真正注册成功):

  1. user.register.enabled=true(配置,默认已关)
  2. sys.account.registerUser=true(数据库)

校园场景保持两者均为 false 即可。

发布注意

  • 需重新编译发布 backend
  • 生产执行 P6-关闭开放注册.sql(若 P5 已执行过可跳过)
  • 验证:POST /prod-api/auth/register 应返回「当前系统没有开启注册功能」

与 P5 关系

  • P5:修 tenantId SQL 注入(格式白名单)
  • P6:缩小免登注册攻击面(默认关闭 + 限流)
  • 两者互补,建议一并发布