ruby on rails sql 注入 LIKE '%#argument% 易受攻击?

Posted

技术标签:

【中文标题】ruby on rails sql 注入 LIKE \'%#argument% 易受攻击?【英文标题】:ruby on rails sql injection on LIKE '%#argument% vulnerable?ruby on rails sql 注入 LIKE '%#argument% 易受攻击? 【发布时间】:2015-03-26 17:53:39 【问题描述】:

我有一个关于 ruby​​ on rails sql 注入漏洞的问题。假设我有这样的方法:

def self.search(args)
 where_clause = `items`.`name` LIKE '%#args%'
 results = Item::where(where_clause)
 return results
end

其中 args 是从搜索框中传入的值。这容易受到攻击吗?我最初的想法是这很容易受到攻击,但是,在尝试了一些查询之后,我无法做到。

LIKE '%%' 有什么特别之处使它不受攻击吗?

谢谢!

【问题讨论】:

你试过什么数据库? :) 只是我们正在开发的我自己的本地数据库。 我的意思是:mysql, postgre, sqlite, sth else? 你到底尝试了什么? 哦,对不起。这是mysql。我尝试了 a%' 或 1=1 'a 它允许我显示所有记录,这显然意味着它可以被注入,但我无法获得删除或销毁语句来处理 【参考方案1】:

为了安全起见,我通常这样做:

Item.where("name LIKE ?", "%#args%")

【讨论】:

我同意你的观点,为了安全起见,我也喜欢这种方法。但是,LIKE '%%' 使它不易受到攻击呢?我尝试了几个不同的角度。

以上是关于ruby on rails sql 注入 LIKE '%#argument% 易受攻击?的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails如何在Windows 10中随时启动cron

如何使用 NuoDB 在 Ruby On Rails 中手动执行 SQL 命令

将重复的SQL模型复制到Ruby on Rails postgresql模型中

如何在 Ruby on Rails 中查看给定 ActiveRecord 查询将生成的 SQL

Ruby on Rails:不使用 find 时如何为 SQL 清理字符串?

在 Ruby on Rails 4 中使用 Active Record 或 Squeel Gem 重写 SQL 查询