控制器中where方法的SQL注入错误

时间:2018-01-31 19:21:33

标签: ruby ruby-on-rails-4

我在Model中有哪个方法,我在控制器中调用它。

def some_method
  test = Something::Model.where(params[:param1],
                                params[:param2],
                                params[:param2],
                                params[:param3])
  ..more code here..
end

将我的代码推送到远程分支后,jenkins开始抛出与制动器相关的错误。经过进一步的调查,我发现制动员正在投掷Possible sql injection error at line ``test = Something::Model.where(params[:param1]所以经过一些研究后我发现我必须使用ActionController::Base.helpers.santize,所以当我按照以下方式使用它时,它并没有引起任何制动误差。

def some_method
  test = Something::Model.where(ActionController::Base.helpers.sanitize(params[:param1]),
                                ActionController::Base.helpers.sanitize(params[:param2]),
                                ActionController::Base.helpers.sanitize(params[:param2]),
                                ActionController::Base.helpers.sanitize(params[:param3]))
  ..more code here..
end

我的问题是,这是解决该错误的正确方法还是有更好的方法?

感谢您阅读

0 个答案:

没有答案