视图是数据库应用中的一个很好的工具,但是,其也有安全隐患。如在SQL Server视图的设计过程中,就存在“所有权链的权利寻租问题”。
什么叫做SQL Server的所有权链呢?如下图所示。当用户需要使用视图“产品成本”时,由于该视图需要用到另外一张视图“材料成本”中的内容,故会自动去打开“材料成本”这个对象。同理,由于材料成本要引用数据库对象“物料清单”中的数据,故数据库又会自动去调用这张基础表的内容。类似的,当多个数据库对象互相按顺序访问,这种顺序就称为“链”。由于在SQL Server数据库中,对组成链对象的用户权限控制不同于单独访问各个对象时的控制。所以,在这里就会出现一个“权利寻租”的安全隐患。
A公司数据库
视图:产品成本
所有者:Landy
视图:材料成本
所有者:Landy
基础表:物料清单
所有者:Grerc
B公司数据库
用户:Lance