是否可以拒绝访问内置的sql函数,例如CONNECTIONPROPERTY和CURRENT_USER

时间:2018-01-17 05:36:30

标签: sql sql-server

是否可以阻止对提供数据库服务器潜在敏感信息的内置SQL Server功能的授权。

例如

  • ConnectionProperty(' net_transport&#39)
  • DB_NAME()
  • APP_NAME()
  • CURRENT_USER

2 个答案:

答案 0 :(得分:1)

没有

仅来自

的权限
SELECT *
FROM fn_builtin_permissions(default)

可以访问。

如果您不希望用户执行这些功能,则用户应通过应用程序访问数据库(使用用户不知道的应用程序登录名/密码),以便应用程序控制用户执行的操作。

答案 1 :(得分:1)

如果用户被拒绝了权限VIEW ANY DATABASE,他应该只能看到他拥有的master,tempdb和数据库。

但是,函数db_name()仍然返回他不应该看到的数据库的值。由于数据库ID是低整数,因此列出服务器上的所有数据库都是件小事。请注意,数据库名称可能包含客户名称等敏感信息。

db_id()存在同样的问题。

从SQL 2005开始,所有版本中都存在此问题。