我正在为模型构建一个自定义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
你觉得怎么样? 提前谢谢!
答案 0 :(得分:1)
是。这是针对sql注入攻击的安全方法。
以下是不安全的示例
conditions << [ "name like #{search[:name]}" ]