小编mke*_*are的帖子

如何在活动记录where子句中使用通配符,同时防止sql注入

从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注入攻击的最佳方法是什么?

activerecord ruby-on-rails

18
推荐指数
1
解决办法
9004
查看次数

标签 统计

activerecord ×1

ruby-on-rails ×1