提交
This commit is contained in:
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:缩小免登注册攻击面(默认关闭 + 限流)
|
||||
- 两者互补,建议一并发布
|
||||
Reference in new issue
Block a user