租户角色设置为 包含administrator的别名时,可以获取到所有租户的数据

Blade 未结 1 576
xzjslc
xzjslc 剑童 2021-07-26 11:47

一、该问题的重现步骤是什么?

1. 租户角色设置为 包含administrator的别名时,可以获取到所有租户的数据

2. 

3.


二、你期待的结果是什么?实际看到的又是什么?

期待只能看到本租户下的数据

实际看到所有租户下的数据

三、你正在使用的是什么产品,什么版本?在什么操作系统上?

bladex商用版,2.8.1

四、请提供详细的错误堆栈信息,这很重要。

image.png

image.png


添加角色时的判定是否为超级管理员是用的equals方法,具体使用时又只要包含administrator就算超级管理员


五、若有更多详细信息,请在下面提供。

此bug会让使用此框架的系统数据完全暴露,很严重

1条回答
  • 2021-07-26 12:48

    创建新角色的时候因为是单个的,所以用的equals。

    而用户会有多角色的设定,所以进行判断的时候用的是contains,这个逻辑没有问题。

    目前从系统层面上操作,只有超级管理员才有全新创建新的超级管理员角色,其他的租户管理员都是无权操作的,所以不会有数据泄露问题。

    当然如果你要说手动把数据库的字段值给改了,那的确会有泄露问题,但是都有权限操作数据库了,更应该担心的是数据库会不会整个被人拷走或者删除。

    作者追问:2021-07-26 14:04

    不是超级管理员的租户可以加  administrator123    administrator,    等等的角色别名。 这些也会被认为是超级管理员

    作者追问:2021-07-26 14:13

    注意上面的示例是administrator,    有逗号的,防止你们修改bug会漏掉这个场景

    1 讨论(0)
提交回复