Rails 4 -在SQL查询中使用LIKE操作符防止SQL注入



我想使用以下查询为我的Rails 4应用程序,但我担心SQL注入攻击:

@persons = People.where("persons.name LIKE ?", "%#{params[:search]}%")
谁能告诉我写上述语句的安全方法?我试过以下,但不确定它是否sql注入证明:
search = "%" + params[:search] + "%"
@persons = People.where("persons.name LIKE ?", search)

谢谢!

你的例子很好,就像zishe说的。

当你对一个方法使用问号并传递另一个参数作为搜索查询时,它会对你的查询字符串进行消毒。

手动执行字符串连接来创建查询是很危险的,例如:

Project.where("name = '#{params[:name]}'")

点击这里查看更多信息

这两个语句都是安全的。你也可以这样写:

@persons = People.where("persons.name LIKE concat('%', ?, '%')", params[:search])

Simlilar qestion

最新更新