mke*_*are 18 activerecord ruby-on-rails
从rails活动记录查询指南sql注入
这段代码非常可取:
Client.where("orders_count =?",params [:orders])
这段代码:
Client.where("orders_count =#{params [:orders]}")
我的问题是我想使用带通配符的LIKE子句.我的旧查询看起来像这样 -
User.where("first_name LIKE '%#{first_name}%'")
Run Code Online (Sandbox Code Playgroud)
哪个易受sql注入攻击,但如果我这样做:
User.where("first_name LIKE '%?%'", first_name)
Run Code Online (Sandbox Code Playgroud)
然后生成的sql看起来像:
SELECT "users".* FROM "users" WHERE (first_name LIKE '%'michael'%')
Run Code Online (Sandbox Code Playgroud)
由于额外的单引号而无效.
使用通配符和LIKE子句以及防止sql注入攻击的最佳方法是什么?
Ros*_*oss 29
您应该像这样修改您的查询
User.where("first_name LIKE (?)", "%#{first_name}%")
Run Code Online (Sandbox Code Playgroud)