2

我正在使用 ASP.NET、C# 和 MS SQL,我创建了一个规则构建器页面,允许用户构建复杂的规则。此页面构建 SQL 调用中“Where”子句之后的内容,但规则页面无法构建子查询、操作顺序或其他非常复杂的子句。

我们希望为高级用户提供编辑此语句的选项,但我们希望阻止可以执行恶意代码的 SQL 注入攻击。我们不关心他们是否想设置 1=1,我们真的关心他们试图突破以调用更新/删除/存储过程等。所以 MS SQL 中任何可以在 where 子句之后出现的东西都是公平的。

这是一个用户可能想要输入的高级查询示例,规则生成器不会使用其下拉菜单构建。

Where Org in (Select Org from AnotherTable Where Manager in (1,2,3)) AND ((Person= 4 OR Level = 5) AND Entity between 5 and 10 or Entity = 15)

有没有人可以想到的东西在那里或免费的?我见过一个很酷的规则生成器允许这样做,但它超过 2000 美元。

4

1 回答 1

2

您是否真的需要清理查询,或者您是否可以仅以具有有限权限的用户身份执行查询,以便他们无法访问内部表或执行变异操作?如果您只想允许任意复杂的 SELECT 查询,那么调整权限可能就足够了。但是,根据您的环境,您可能仍需要将其他类型的攻击(如重复的“SELECT * FROM RecognizeBigTable”)视为 DOS 类型的攻击。

于 2013-04-27T00:33:03.537 回答