【发布时间】:2014-12-30 05:03:09
【问题描述】:
我正在使用brakeman gem 来识别我的rails 项目中的sql 注入问题。发现一个中等级别的注入问题,我从参数传递表名的 sql 查询。我如何避免这个问题。我尝试用 `(ticks) 包围表名。
以下是导致此问题的代码:
Student.find_by_sql("select * from students,#{params[:name]} where conditions")
以下是我尝试过的:
Student.find_by_sql("select * from students,`#{params[:name]}` where conditions")
我正在使用 ruby 1.8.7 和 rails 2.3.2。
【问题讨论】:
-
你错过了一堆
"... -
rails 不使用准备好的语句,
?等 -
使用
find_by_sql可能是代码异味。您能否添加一个更好的示例,您想要归档哪些内容以及哪些部分需要动态化?目前我认为Student.joins(params[:name]).where...可能是更好的方法。 -
我刚刚写了一个任意代码@meager。
-
@spickerman,where 不适用于我正在使用的版本。
标签: ruby-on-rails ruby