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