0

モデルのカスタムwhere句を作成していますが、それがSQLインジェクション攻撃に対する安全な方法であるかどうかを知りたいと思いました。これが私の方法です:

def self.search(search)
  if search
    conditions = []
    conditions << [ 'name like ?', search[:name] ] unless search[:name].blank?
    conditions << [ 'product_type_id = ?', search[:product_type_id] ] unless search[:product_type_id].blank?

    conditions = ( conditions.empty? ? nil : [conditions.transpose.first.join(' and '), *conditions.transpose.last] )
    where(conditions)
  else
    scoped
  end
end

どう思いますか?前もって感謝します!

4

1 に答える 1

1

はい。これは、SQLインジェクション攻撃に対する安全な方法です。

以下は安全ではない例です

conditions << [ "name like  #{search[:name]}" ]
于 2012-10-19T08:47:00.007 に答える