0

我很难理解如何做以下事情:

我有一个 javascript 可以帮助我动态地构建过滤查询,然后对其进行编码并将其作为参数发送到 rails。

过滤器是这样构建的:myfilter = {"field": "birth_date", "comparison": "lt", "type": "date", "value": "2012-05-27"}}

所以我正在为我的 find 方法构建一个动态设置的条件哈希。最大的问题是,在这种情况下,即使通过查询的字段名称,我也可以被 SQL 注入。你对构建我的 find 方法有什么建议?

我想做这样的事情:

Client.where("? ? ?",myfilter['field'],myfield['comparison'].to_operator,myfield['value'])

但这是无效的。我怎样才能做到这一点,让我的查询保持清洁?

4

1 回答 1

1

您在客户端所做的只是将过滤器描述为名称、运算符和值。这就是您在服务器端使用它们的方式,这可能会使您容易受到注入攻击。

可以根据查询中的列检查 ColumnName。运算符针对某种允许值列表,或者可能通过枚举传递。

像往常一样的值。

于 2012-05-28T20:35:48.303 回答