1

user_ransaker.rbファイルに次のコードがあります。

ransacker :new_donors do
      sql = %{(
              users.id IN (
                #{User.new_donor_sql}
              )
            )}
      Arel.sql(sql)
    end

モデルuser.rb:

def self.new_donor_sql
    part_1 = %{(
      SELECT distinct(user_id)
      FROM donations
    }
    part_1
end

上記のステートメントに対して、次の Brakeman 警告が表示されます。

Confidence: High
Category: SQL Injection
Check: SQL
Message: Possible SQL injection
Code: Arel.sql("(\n users.id IN (\n #{User.new_donor_sql}\n)\n)")
File: app/models/concerns/user_ransackers.rb

これは有効なエラーですか? ActiveRecord を使用して SQL ステートメントを記述した?場合、値を補間する必要がある場合はプレースホルダーを使用できました。この警告を修正する方法がよくわかりません。これが有効な警告である場合、どうすれば修正できますか?

4

1 に答える 1