activerecord安全传递参数的方法

提示:如有转载请注明作者 小游戏 及出处

 

当我们进行进行activerecord操作时, :conditions使我们最为常用的组合条件表达式的地方,有几种方式可以把外部参数传入其中

1.用#{para}的方式传递参数,但是这种方式最不安全,容易被sql注入攻击

2.conditions值为一数组,数组的第一个元素为模板字符串,用?当占位符,其他元素为实际值,代替前面的占位符,如conditions=>['a=? and b=?', 10, 20]

3.conditions值为一数组,数组的第一个元素为模板字符串,用命名的占位符,占位符的表示方式以:为开始,也就是ruby中的符号类型,第二个元素是个哈希表,要替代的元素都在这里面表示,如果conditions=>['a=:a and b=:b',{:a=>10, :b=>20}]

4.like从句的构造也要遵从上面的原则,不能用?与字符串在模板中构成从句,也就是["a like '?%'", 'ddd']不正确,而[“a like ?”, 'ddd' + '%']是正确的

你可能感兴趣的:(sql,游戏,Ruby,ActiveRecord)