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

Preventing SQL Injection in Rails while using Javascript Query Builder

本文关键字:Rails 中的 SQL 注入 Javascript Query Builder      更新时间:2023-09-26

我想在多用户应用程序中使用jQuery查询生成器作为工具:http://mistic100.github.io/jQuery-QueryBuilder/

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

我知道防止SQL注入的传统方法(即硬编码WHERE语句而不是直接插入用户输入的字符串),但在这种情况下,考虑到我们试图保持事物的动态和灵活性,这将证明会更加困难。

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

我的一个想法是查找和替换任何有问题的单词(即 DROP 等),但我知道这会限制用户输入(即如果他们想搜索与"他丢球"匹配的记录)......而且也许也不是万无一失的。

除了必须编写一些复杂的算法来生成SQL代码服务器端之外,还有其他方法可能有效吗?

一般来说,

你应该只接受对索引的GET请求的真正"过滤"参数。即便如此,您也不想随意获取所有参数并将它们推入 WHERE 子句中。

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

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