This commit is contained in:
zlwu committed 2026-09-22 19:22:18 +08:00
1 parent 5fd0042068
commit 1e6dcb164c
94 files changed
+796 -312

No files matched your search

@@ -0,0 +1,35 @@
# 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:缩小免登注册攻击面(默认关闭 + 限流)
- 两者互补,建议一并发布