Files
hzdyjs/问题整改/P6-注册接口滥用整改说明.md
T
2026-09-22 19:22:18 +08:00

36 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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:缩小免登注册攻击面(默认关闭 + 限流)
- 两者互补,建议一并发布