Ruby on rails 访问oracle视图/函数时Rails Brakeman SQL注入警告

Ruby on rails 访问oracle视图/函数时Rails Brakeman SQL注入警告,ruby-on-rails,ruby,ruby-on-rails-3,owasp,brakeman,Ruby On Rails,Ruby,Ruby On Rails 3,Owasp,Brakeman,我有使用oracle视图/函数的rails代码。 这是我的代码: def run_query connection.exec_query( "SELECT * FROM TABLE(FN_REQ(#{demo_type_param},#{demo_tid_param}}))") end 运行Brakeman analyzer时,它会警告可能的“sql注入攻击” 我需要了解这是否是一个有效的警告,如果是,我如何补救 因为这是一个函数&不是一个实际的表,所以我不确定什么是

我有使用oracle视图/函数的rails代码。 这是我的代码:

 def run_query
    connection.exec_query(
      "SELECT * FROM TABLE(FN_REQ(#{demo_type_param},#{demo_tid_param}}))")
  end
运行Brakeman analyzer时,它会警告可能的“sql注入攻击”

我需要了解这是否是一个有效的警告,如果是,我如何补救

因为这是一个函数&不是一个实际的表,所以我不确定什么是正确的方法。 如果它是一个普通模型,我会遵循以下模式:


Model.where(“mycolumn1=?和mycolumn2=?”,demo_type_参数,demo_tid_参数)。首先
t

是的,它是真实的。几乎每一次,只要从简单的串联变量构建任何SQL查询,都容易受到SQL注入的攻击。通常,每次插入查询的数据看起来像有效的SQL并可能导致执行其他查询时,都会发生SQL注入

唯一的解决方案是手动执行适当的转义或使用准备好的语句,后者是首选解决方案

使用ActiveRecord/Rails,您可以直接与绑定一起使用

sql = 'SELECT * FROM TABLE(FN_REQ(?,?))'
connection.exec_query(sql, 'my query', [demo_type_param, demo_tid_param])

在这里,Rails将在数据库上准备语句,并在执行时向其添加参数,确保所有内容都正确转义并从SQL注入中保存。

是的,它是真实的。几乎每一次,只要从简单的串联变量构建任何SQL查询,都容易受到SQL注入的攻击。通常,每次插入查询的数据看起来像有效的SQL并可能导致执行其他查询时,都会发生SQL注入

唯一的解决方案是手动执行适当的转义或使用准备好的语句,后者是首选解决方案

使用ActiveRecord/Rails,您可以直接与绑定一起使用

sql = 'SELECT * FROM TABLE(FN_REQ(?,?))'
connection.exec_query(sql, 'my query', [demo_type_param, demo_tid_param])

在这里,Rails将在数据库上准备语句,并在执行时向其添加参数,确保所有内容都正确转义并从SQL注入中保存。

上面的“我的查询”代表什么。我们需要它吗,因为sql变量已经有了查询?它是添加到日志中的准备好的语句的名称。它对查询没有技术意义。我得到的错误是:ActiveRecord::StatementInvalid(NoMethodError:undefined method`type'for“'ALL'”:String:SELECT*FROM TABLE(FN_REQ(?,,,,,,,,,,,,,,,,?):@Micheal这可能会奖励一个新问题,并提供必要的详细信息。谢谢,我将深入探讨。看起来根本没有选择参数上面的“我的查询”代表什么。我们需要它吗,因为sql变量已经有了查询?它是添加到日志中的准备好的语句的名称。它对查询没有技术意义。我得到的错误是:ActiveRecord::StatementInvalid(NoMethodError:undefined method`type'for“'ALL'”:String:SELECT*FROM TABLE(FN_REQ(?,,,,,,,,,,,,,,,,?):@Micheal这可能会奖励一个新问题,并提供必要的详细信息。谢谢,我将深入探讨。看起来根本没有选择参数