【发布时间】:2016-04-26 09:15:48
【问题描述】:
在 Oracle 中,用户只需要查看视图的权限就可以从中选择,更准确地说,是视图从表中看到的内容。表上的特权不是必需的。
让我们考虑一下这种情况:
Table T belongs to A
A GRANT SELECT ON T to B (without GRANT OPTION)
B CREATE VIEW V AS SELECT * FROM A.T
B GRANT SELECT ON V TO C
C performing SELECT * FROM B.V
按照上面的规则,C可以从V中选择,因此相当于从T中选择。这是作弊吗? B 有效地让 C 看到 A.T,尽管 C 没有 T 的权利并且 B 没有 GRANT OPTION。某处是否存在安全漏洞?
【问题讨论】:
-
A 不希望除 B 以外的任何人查询 T,因此他不给 B WITH GRANT OPTION。但是通过创建视图 B 将所有信息提供给 C 和其他所有人,有效地欺骗了 A。此外,如果 C 在 V 上创建另一个视图并做同样的事情,最终每个人都会看到 A 试图隐藏的内容。
标签: oracle view oracle11g privileges grant