1.6 KiB
1.6 KiB
SQL 注入漏洞整改说明(tenantId / P5)
背景
攻防演练报告:免登接口 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 |
配套 SQL(生产建议执行)
关闭开放注册,缩小免登攻击面:
UPDATE sys_config
SET config_value = 'false',
update_time = NOW()
WHERE config_key = 'sys.account.registerUser'
AND deleted = 0;
发布与验证
- 重新编译发布 backend(仅发前端无效)
- 用报告同类 payload 打
/prod-api/auth/register,应返回租户编号格式不正确 / 未开启注册,不应再出现 XPATH / SQL 报错泄密 - 正常
tenantId=000000登录不受影响
状态
- 代码:已完成
- 生产生效:取决于是否已用含本修复的包重启