如何修复由制动器生成的导轨中的危险发送安全警告?

时间:2016-08-09 08:53:58

标签: ruby-on-rails

我在我的应用程序中使用 brakeman 进行安全扫描,该应用程序位于Rails 4.2中。 报告信心为,警告类型为危险发送。 以下是我遇到问题的控制器方法:

class AccountsController < ApplicationController
  def new
    @account_name = Rails.application.config.custom.accounts.send(params[:account_name]).name
    @account_logo = Rails.application.config.custom.accounts.send(params[:account_name]).signup_logo
  rescue
    nil
  end
end

请帮帮我。

1 个答案:

答案 0 :(得分:5)

直接通过用户输入调用方法,即params属性是危险的安全威胁,通过解决这个问题,我们必须在调用它之前将white-list params发送到内部。

class AccountsController < ApplicationController
  def new
    method = params[:account_name] || :default_method
    if ["method1", "method2", "method3"].include?(method)
      @account_name = Rails.application.config.custom.accounts.send(method).name
      @account_logo = Rails.application.config.custom.accounts.send(method).signup_logo
    end
  rescue
    nil
  end
end