noh*_*hat 12 sql sql-injection ruby-on-rails
出于性能原因,我需要在我的Rails模型中编写一个执行一些任意SQL的新方法:
UPDATE table
   SET col1 = ? AND col2 = ?
   WHERE id = ?
我知道我可以使用ActiveRecord::Base.connection.execute或ActiveRecord::Base.connection.update使用一串SQL来获得我需要的结果,但是?使用实际参数值替换参数占位符()的正确步骤是什么?是否有一个Rails方法用于将参数插入到SQL语句中,还是应该通过手动插值来完成?后者似乎不安全......
你也可以这样做:
updates = ActiveRecord::Base.send(:sanitize_sql_array, ["name = ? and category = ?", name, category])
ActiveRecord::Base.connection.execute("update table set #{updates} where id = #{id.to_s.to_i}")
to_s被称为在id之前to_i的情况下,它是零.
| 归档时间: | 
 | 
| 查看次数: | 10432 次 | 
| 最近记录: |