使用Javascript Query Builder时防止Rails中的SQL注入

时间:2016-03-20 11:33:51

标签: javascript jquery ruby-on-rails query-builder

我想将jQuery查询构建器用作多用户应用程序中的工具:http://mistic100.github.io/jQuery-QueryBuilder/

我知道如果设置不当,使用这样的工具可能会给SQL注入带来很大的风险。

我知道防止SQL注入的传统方法(即硬编码WHERE语句而不是直接插入用户输入的字符串),但在这种情况下,考虑到动态和灵活性,这将变得有点困难我们正在努力保持一切。

我想知道在使用像此查询构建器这样的东西时是否有任何简单的方法来设置安全过程。主要关注的是一个用户能够访问和/或修改另一个用户的记录(我不关心他们弄乱他们自己的记录,但他们都在同一个数据库中)。

我有一个想法是对任何有问题的单词(即DROP等)进行查找和替换,但我知道这会对用户输入施加限制(即,如果他们想要搜索匹配&#34的记录;他丢球")......也许并非万无一失。

是否还有其他方法可行,缺少必须在某些复杂算法中编码才能生成SQL代码服务器端?

1 个答案:

答案 0 :(得分:1)

通常,您应该只接受对索引的GET请求的“过滤器”参数。即便如此,你也不想毫不犹豫地把所有参数都推到一个WHERE子句中。

如果您想让用户创建复杂的条件,您将创建一个简单的解析器,它接受用户输入并通过Arel构建SQL语句。

或者您可能希望使用现有引擎进行全文搜索,例如Lucene。