You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cp1996
9249a8f884
fix: 修复多处越权访问漏洞 (IDOR / missing @PreAuthorize)
新增 UserUtil.checkUserAccess(targetUserId) 统一越权校验工具,
并修复以下控制器中缺失或错误的权限校验:
1. SysOptionsRestController.findAllOptions
无任何权限校验,任何登录用户可读取平台级系统参数,
其中包含阿里云 AccessKey / 邮箱 / 非对称加密公钥等敏感配置。
加超管校验 + @PreAuthorize("system_options_select")。
2. DictRestController
- get / findPage 缺失 @PreAuthorize,补 system_dict_select
- delAll 的权限名错写为 system_dict_insert,改为 system_dict_delete
3. RoleRestController.findPage / TenantRestController.findPage
@PreAuthorize 被注释掉,恢复启用。
4. UserRestController.getInfoById / getOrgByUserId / getRoleIdsByUserId
可通过传入任意 userId 读取其他租户/用户的信息、组织和角色。
加 @PreAuthorize("system_user_select") + UserUtil.checkUserAccess(userId)。
注:getInfo() / getOrg() 通过 this.xxx() 内部调用这些方法,
Spring AOP 对 this 调用不生效,@PreAuthorize 不会触发;
checkUserAccess 对"查自己"直接放行,保持既有行为。
5. UserRoleRefRestController.getRoles
同上,补 @PreAuthorize 和 checkUserAccess。
checkUserAccess 规则:
- 查自己 / 超管 → 放行
- 目标是超管 → 仅超管可访问
- 跨租户 → 拦截
- 同租户且目标非超管 → 放行
- 其它一律抛 AccessDeniedException
|
3 weeks ago |
| .. |
|
src
|
fix: 修复多处越权访问漏洞 (IDOR / missing @PreAuthorize)
|
3 weeks ago |
|
pom.xml
|
增加 系统字典
|
6 years ago |