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