0

考虑到您可以在查询中使用选择表达式

    select table1.ID, (select table2.salary, table1.id from table2 inner join...
from table1

并检索您不必在 from 语句中引用的数据,就企业 DBMS 的安全性而言,这是如何防范的?做表权限工作,这样你就不能允许对它们的任何引用(因为这种情况它不在你的 from 语句中)

4

1 回答 1

2

您可以强制执行列级权限。因此,请求是否来自选择列表、子查询、存在位置等都无关紧要:

DENY SELECT ON OBJECT::dbo.table2(salary) TO [user/role];

您还可以完全拒绝对基础表的选择,并创建一个仅公开您希望用户看到的列的视图。或者让他们执行一个只选择一个子集的存储过程。

于 2012-07-21T19:43:22.770 回答