0

私は次のことを行う方法を理解しようとして苦労しています:

フィルタリングクエリを動的に構築し、それをエンコードして、paramとしてrailsに送信するのに役立つJavaScriptがあります。

フィルタは次のように構築されます。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 に答える