是否可以基于每个程序限制权限?

时间:2016-04-06 17:01:40

标签: sql sql-server stored-procedures

我正在编写一个sql过程,其中几乎所有内容都是动态的,包括使用IN语句选择,分组,排序和where子句。在代码重用,可读性和维护方面,将sql查询作为字符串传递并执行它是很有意义的。我正在编写我的程序,以便所有相关数据在静态查询中连接和格式化,然后插入到表变量中。然后我想传入sql查询以对表变量执行。

这让我开始了很大程度上的SQL注入。我可以为我传入的众多参数类型中的每一个创建表值参数,但我不想这样做。我真的希望能够以一种方式对我的程序进行沙盒处理,在程序级别上,只能执行我想要允许的这些事情;即从某些表中选择,但不授予权限或任何有趣的东西。可以这样做吗?

1 个答案:

答案 0 :(得分:0)

当然可以做到。这是一个简单的编程问题。您将在表中保留规则,并在存储过程中编写逻辑以查询规则表,并遵循规则。

如果您不使用通用的动态存储过程,这将是一项巨大的工作,基本上相当于您编写自定义代码来执行SQL Server已经为您执行的操作。

我不会这样做,但你不必让那阻止你。