角色查看界面中的界面权限界面有个BUG

角色查看界面中的界面权限界面中的“allowAllScreens”CheckBox没有进行权限判断。
第229行代码如下:
screenWildcardCheckBox.setEditable(!roleDs.getItem().isPredefined());
参考SpecificPermissionsFrame,应该做权限判断,代码如下:

boolean isCreatePermitted = security.isEntityOpPermitted(Permission.class, EntityOp.CREATE);
boolean isDeletePermitted = security.isEntityOpPermitted(Permission.class, EntityOp.DELETE);
boolean hasPermissionsToModifyPermission = isCreatePermitted && isDeletePermitted;
screenWildcardCheckBox.setEditable(hasPermissionsToModifyPermission
&& !roleDs.getItem().isPredefined());

这个BUG一直没人管?7.2.8发现的,好像7.2.9也没改吧

能详细一下吗?目前的代码会有什么问题?

当前的用户没有修改的权限,依然能够勾选那个“允许所有界面权限”的checkBox,对比特定权限界面就知道了,等于绕过了权限

我大概看了一下,能不能这么理解这块代码:
如果当前用户没有对 Permission 实体的增删权限,他也可以选中 “允许所有界面” 的复选框,但是在保存的时候会出现异常,因为这时要给 Permission 实体添加记录,而当前用户是没有对此实体的 insert 权限。

您就这样理解,当用户没有 Permission 实体的增删权限的时候,在这个标签页的其他标签页中(特定权限、实体权限、属性权限等)的“允许所有XXX”的checkbox都是灰的不允许操作,只有界面权限这个标签页可以操作。当然操作了最后还是报错。

我主要关注的是这块是否存在你说的 “绕过权限” 的问题? 也就是说一个低权限的用户会自己给自己提权,如果是这样,那就是严重的 Bug 。 如果只是界面显示的问题,那么我们定义为需要改进的问题。

因为这个BUG是之前提的,我忘记了是否能保存成功。看起来应该保存不成功的,只是界面控制的问题?我现在也没法测试。现在是因为在研究反向授权的时候又看到这个问题才翻出来提的,谢谢!

不管怎样,非常感谢你的意见 :+1:。如果发现这块确实是有漏洞,欢迎再反馈,注意在反馈时尽量精准一些。

谢谢!希望cuba越做越好!

2 个赞