首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4-在SQL查询中使用LIKE操作符防止SQL注入

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

Stack Overflow用户
提问于 2014-08-21 00:46:41
回答 2查看 6.9K关注 0票数 7

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

代码语言:javascript
复制
@persons = People.where("persons.name LIKE ?", "%#{params[:search]}%")

有人能告诉我写上述声明的安全方法吗?我尝试过以下几种方法,但不确定它是否具有SQL注入的安全性:

代码语言:javascript
复制
search = "%" + params[:search] + "%"
@persons = People.where("persons.name LIKE ?", search)

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-21 01:23:37

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

每当向方法使用问号并将另一个参数作为搜索查询传递时,它就会清除查询字符串。

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

代码语言:javascript
复制
Project.where("name = '#{params[:name]}'")

Click here for more information

票数 11
EN

Stack Overflow用户

发布于 2014-08-21 01:00:24

你们的陈述都是安全的。你也可以这样写:

代码语言:javascript
复制
@persons = People.where("persons.name LIKE concat('%', ?, '%')", params[:search])

Simlilar qestion

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25416667

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档