Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可能的sql注入_Sql_Ruby_Oracle_Ruby On Rails 3_Squeel - Fatal编程技术网

可能的sql注入

可能的sql注入,sql,ruby,oracle,ruby-on-rails-3,squeel,Sql,Ruby,Oracle,Ruby On Rails 3,Squeel,我在我的项目中使用的代码如下: def self.search(query) return self.scoped if query.blank? self.joins(:supplier).where{lower(supplier.supplier_name).like_any(["%#{query}%"])} end 我的问题是,这段代码易受SQL注入攻击吗?我该如何修复它?我试图执行清理(查询),但它只是添加了一组额外的引号,并且SQL语句没有正确生成。更新: se

我在我的项目中使用的代码如下:

def self.search(query)
    return self.scoped if query.blank?

    self.joins(:supplier).where{lower(supplier.supplier_name).like_any(["%#{query}%"])}
  end

我的问题是,这段代码易受SQL注入攻击吗?我该如何修复它?我试图执行清理(查询),但它只是添加了一组额外的引号,并且SQL语句没有正确生成。

更新:

self.joins(:supplier).where{lower(supplier.supplier_name).like_any(["%"+?+"%"], query)}
squel将自动转义字符串,因此您的查询很好,不会打开注入。看

旧(不正确)答案: 这是活动记录版本

如果我错了,有人会纠正我,但是由于您将#{query}作为字符串而不是参数传递,那么您就打开了注入的大门。看

使用参数将转义“查询”字符串

使用参数的查询:

self.joins(:supplier).where{lower(supplier.supplier_name).like_any(["%"+?+"%"], query)}

这是续集吗?看起来它可能来自Squel gem:-请澄清,因为SQL注入的漏洞与否取决于哪个库。虽然我怀疑它不易受攻击,但大多数库都会小心地转义用于查询的参数。@NeilSlater你是对的,让我编辑这个问题,请随意回答,如果它是续集,我当然可以回答。但我没有设置ActiveRecord db,也不确定,尽管我怀疑您的代码没有漏洞。希望知道得更好的人能够更有信心地回答。