背景
在权限管理中一般分为两类:操作权限、数据权限
操作权限:是用户是否能使用某个功能的接口权限。
数据权限:是用户是否能操作某个范围的数据,例如:订单记录修改接口,“用户”只能修改所属的(用户A不能修改用户B的订单记录),“admin”可修改所有的。
现有权限管理一般是基于RBAC(Role-Based Access Control)模型,都只能解决操作权限的控制,即使粒度再小(如把订单权限划分为增、删、改、查权限)也不能解决数据权限的问题。
操作权限与数据权限的关系,下面是个例子:
admin和张三(员工)都有公寓大门的钥匙,他们都能进入公寓(访客不能进入),虽然他们都能进公寓但他们管理但房间是不同的,张三只能使用自己的房间,管理员可以使用所有的房间,如果张三使用了其他人的房间就会引发问题——数据权限安全问题。
那么如何在已有的权限管理模型下对数据权限进行管理是数据安全难以避免的问题。
数据权限问题的解决
数据权限问题的来源
不属于用户拥有的一条或多条数据被非法操作。
解决方式
1、通过业务逻辑对数据所属进行验证,因为不同业务对数据安全性有不同的需求,这种是常用方式
2、通过框架验证