ruby-on-rails-3 - 基于 Rails 3 中的 return_to 参数保护重定向

标签 ruby-on-rails-3 security redirect

我有一些操作重定向回或重定向到我的网站中的另一个位置,我通过原始页面的参数传递了这些位置。

在我的 application_controller.rb我有这种方法,我在其他 Controller 中使用它来获取和处理参数 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

结尾

阅读Security Guide我看到这可以用于网络钓鱼攻击,所以我想保护它,可能通过过滤 return_to仅重定向到我域中的 URL。

我错过了什么吗?关于如何以简单而优雅的方式执行此操作的任何想法?

最佳答案

我在我的 ApplicationController 中添加了以下内容作为私有(private)方法

  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])

也希望得到其他人如何做到这一点的反馈。

关于ruby-on-rails-3 - 基于 Rails 3 中的 return_to 参数保护重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8773581/

相关文章:

ruby - 是否可以在回形针中将附件设为可选?

ruby-on-rails - Rails gem 在执行 "rake test"时使用开发数据库而不是测试数据库

windows - 在 Win XP 命令行中同时将输出重定向到多个文件和标准输出

apache - 如何通过 .htaccess 正确地将 index.php 重定向到另一个页面?

c++ - 可以在运行时更改 argv(不是由应用程序本身)

.htaccess 使用 SSL 将辅助域重定向到主域

ruby-on-rails - 我应该将 gem 版本放在我的 Gemfile 中吗?

ruby-on-rails - 如何对按日期时间排序的记录进行排序?

facebook - Facebook 登录存在潜在的安全问题?

security - 当IE提示 “Only secure content is displayed”时,我能知道不安全内容的网址吗?