攻防演练报告:免登接口 POST /prod-api/auth/register 的 tenantId 经多租户插件拼入 SQL,可 extractvalue 拖库(RuoYi-Vue-Plus XVE-2026-50962 同类问题)。
| # | 措施 | 位置 |
|---|---|---|
| 1 | sink 白名单:租户 ID 仅 ^[0-9]{1,20}$,非法不拼 SQL |
PlusTenantLineHandler、TenantHelper.checkTenantIdFormat |
| 2 | 注册接口先 checkTenant,再查注册开关 |
AuthController.register |
| 3 | 登录/动态租户入口统一格式校验 | SysLoginService.checkTenant、TenantHelper.setDynamic |
| 4 | 入参 Bean 校验 @Pattern |
LoginBody.tenantId(含注册) |
| 5 | selectRegisterEnabled 入口再校验 |
SysConfigServiceImpl |
| 6 | 社交登录绑定参数校验 | AuthController.authBinding |
| 7 | 删除心理咨询调试任意 SQL 接口 | 已删除 XljkConsultationDebugController |
关闭开放注册,缩小免登攻击面:
UPDATE sys_config
SET config_value = 'false',
update_time = NOW()
WHERE config_key = 'sys.account.registerUser'
AND deleted = 0;
/prod-api/auth/register,应返回租户编号格式不正确 / 未开启注册,不应再出现 XPATH / SQL 报错泄密tenantId=000000 登录不受影响