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 回答