に取り組んでいます
、我々は、入力に基づいてクエリ文字列を構築します。例えば
ages_and_scores = [ [5, 6], [9, 12], [22, 44] ]
query_string = ages_and_scores.map do |pair|
"(age = #{pair[0]} AND score = #{pair[1]})"
end.join(" OR ")
# => (age = 5 AND score = 6) OR (age = 9 AND score = 12) OR (age = 22 AND score = 44)
最後に、あなたのクエリがages_and_scores
は私の例とは異なるフォーマットであるので、あなたは、クエリ文字列を構築する方法のロジックを補正してもよい
User.where(query_string)
になります。
改善
ages_and_scores = [ [5, 6], [9, 12], [22, 44] ]
query_params = []
query_template = ages_and_scores.map{ |_| "(age = ? AND score = ?)" }.join(" OR ")
# => (age = ? AND score = ?) OR (age = ? AND score = ?) OR (age = ? AND score = ?)
User.where(query_template, *ages_and_scores.flatten)
私はSQLインジェクションにこのように脆弱ですか? – coderVishal
@coderVishal私の改善を確認してください –
@coderVishalこれは役に立ちますか? –