Защита перенаправлений на основе параметра return_to в Rails 3 - PullRequest
4 голосов
/ 08 января 2012

У меня есть некоторые действия, перенаправляющие назад или в другое место на моем сайте, которые я передаю с параметром с исходной страницы.

В моем application_controller.rb у меня есть этот метод, который я использую в других контроллерахполучить и обработать параметр return_to

def redirect_to_return_to_or_default(default)
  if params[:return_to].present?
    redirect_to params[:return_to]
    return
  end

  redirect_to default

end

Чтение Руководство по безопасности Я вижу, что это может быть использовано в фишинговых атаках, поэтому я бы хотелчтобы обезопасить его, возможно, с помощью фильтра return_to для перенаправления только на URL-адреса в моем домене.

Я что-то упустил?Любые идеи о том, как выполнить это простым и элегантным способом?

1 Ответ

2 голосов
/ 09 августа 2013

Я добавил следующее как частный метод в свой ApplicationController

  def redirect_to_param(token)
    unless token.blank?
      parsed_token = URI.parse(token)
      res = ""
      res << parsed_token.path
      unless parsed_token.query.blank?
        res << "?"
        res << parsed_token.query
      end
      return res
    end
  end

И затем, куда бы я ни захотел перенаправить на предоставленный пользователем параметр, я говорю что-то вроде

redirect_to redirect_to_param(params[:redirect])

Хотелось бы услышать отзывы о том, как другие это делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...