拥有低级别数据权限的角色能否推断表中存在高级别数据?
数据库权限与数据推断问题
表结构与数据
创建表语句
CREATE TABLE Farm ( ID INT, Name CHAR(1), Contents VARCHAR(255), Level VARCHAR(50) );
插入数据语句
INSERT INTO Farm (ID, Name, Contents, Level) VALUES (1, 'A', 'Cats', 'Low'), (1, 'B', 'Dogs', 'Low'), (1, 'C', 'Lions', 'High'), (1, 'D', 'Pups', 'Low');
权限设置与问题
- 角色A拥有Farm表的全部访问权限
- 角色B仅拥有Farm表中Level为
'Low'的行的全部权限
问题:分配到角色B的用户是否有可能推断出表中存在Level为"High"的记录?(注:用户可通过ID键关联其他表)
分析结论
角色B只能访问包含'Low'级别数据的视图,无法直接查看Level为'High'的行。仅通过该视图执行COUNT(*)这类操作,只能得到Low级别的行数,无法直接得知是否存在High级别的记录。
但如果存在其他通过ID关联的表,且角色B能访问该关联表的完整数据,情况会发生变化:比如关联表中ID=1的记录数多于角色B在Farm视图中看到的3条,用户就能推断出Farm表中存在其他Level的记录(比如High)。不过如果没有这类额外的关联数据支撑,仅靠自身能访问的Farm视图,角色B无法推断出存在Level为'High'的记录。
内容的提问来源于stack exchange,提问作者0xfffe
相关产品推荐
相关产品推荐

