通过拒绝视图定义来保护存储过程

时间:2011-04-13 06:09:51

标签: sql-server sql-server-2005

如果用户有保护存储过程代码就足够了 DENY VIEW ANY DATABASE DENY VIEW ANY DEFINITION

仅授予用户execute sp。他有可能追踪或以某种方式看到代码吗? 我无法使用分析器在该登录下连接,但可能还有其他一些方法。

1 个答案:

答案 0 :(得分:3)

目前尚不清楚你的目标是什么:你是想保护知识产权吗?阻止用户查看源代码中的敏感信息(例如密码);防止用户自己更改程序或其他内容?您的用户是您自己公司的内部用户还是外部客户?他们是否托管数据库和应用程序,或者你呢?

保护知识产权:

  • 让您的用户(客户?)签署保密协议或合同,指明您的条款和条件,并包括披露您的知识产权的处罚
  • 将敏感信息移动到您作为Web服务托管和公开的服务

阻止用户查看源代码:

  • 使用加密创建程序 - 这只会阻止“普通”用户查看代码,它不会阻止具有sysadmin权限的确定用户
  • 在.NET中编写CLR过程而不是使用TSQL
  • 将敏感信息移至已编译的客户端应用程序
  • 将敏感信息移动到您作为Web服务托管和公开的服务

防止用户更改程序:

  • 不要给他们必要的权限

最后,具有sysadmin权限的确定用户将始终反向工程,调试,反编译或以其他方式揭示代码中的逻辑。所以你需要非常清楚你要防止的确切内容,对你或你公司的潜在影响,以及你愿意花多少时间和金钱来预防它。