加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 根据Rails 3中的return_to param保护重定向

发布时间:2020-12-17 07:09:26 所属栏目:百科 来源:网络整理
导读:我有一些操作重定向回到我网站中的另一个位置,我从原始页面传递了一个参数. 在我的application_controller.rb中我有这个方法,我在其他控制器中使用它来获取和处理param return_to def redirect_to_return_to_or_default(default) if params[:return_to].pres
我有一些操作重定向回到我网站中的另一个位置,我从原始页面传递了一个参数.

在我的application_controller.rb中我有这个方法,我在其他控制器中使用它来获取和处理param 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中添加了以下作为私有方法

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

会喜欢反馈其他人如何做到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读