我正在使用 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 美元。