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

@persons = People.where("persons.name LIKE ?", "%#{params[:search]}%")

有人可以告诉我写上述声明的安全方法吗?我已经尝试了以下方法,但是不确定它是否可以防止SQL注入(inject):
search = "%" + params[:search] + "%"
@persons = People.where("persons.name LIKE ?", search)

谢谢!

最佳答案

正如zishe所说,您的例子很好。

每当您对方法使用问号并将其他参数作为搜索查询传递时,它都会清理您的查询字符串。

当您手动执行字符串连接以创建查询时,这很危险,例如:

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

Click here for more information

关于ruby-on-rails-4 - Rails 4-在SQL查询中使用LIKE运算符防止SQL注入(inject),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25416667/

10-12 12:38
查看更多