我有一些操作重定向回到我网站中的另一个位置,我使用原始页面中的参数传递。
在我的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
端
阅读Security Guide我看到这可以用于网上诱骗攻击,所以我想保护它,可能是通过过滤return_to
来重定向到我域中的网址。
我错过了什么吗?有关如何以简单而优雅的方式执行此操作的任何想法?
答案 0 :(得分:2)
我在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])
会喜欢反馈其他人如何做到这一点。