動的 SQL ステートメントを作成しActiveRecord::Base.connection.select_values
、クエリが少し複雑であるため (複数のテーブルから複数の group by および select 列を使用して 3 ~ 4 個のテーブルを結合する)、より迅速な応答が必要であるため、使用して実行しています。SQL インジェクションを特定するためにBrakemanセキュリティ スキャナーを使用しています。これらの動的クエリのほとんどは、SQL インジェクションに対して脆弱であるとマークされています。
Rails内部メソッドのいくつかを使用して、単一引用符の動的SQLステートメントで使用されたパラメータを手動でクリーンアップしようとしました例:文字列をエスケープ(単一引用符)するために、sanitize_sql_for_conditions
他の同様の方法を試しましたが、BrakemanはまだそれらをSQLインジェクションに対して脆弱であると識別していますまたは、一重引用符だけをエスケープしても SQL インジェクションの問題は解決しませんか?
動的 SQL の構築中に SQL インジェクションを処理するより良い方法はありますか?
Rails 2.3 ruby 1.8.7 を使用しています