2012-01-07 10 views
4

元のページからパラメータを渡したサイト内の別の場所にリダイレクトするアクションがあります。私application_controller.rbRails 3のreturn_to paramに基づくリダイレ​​クトを保証する

私は、私はPARAM私はこれはフィッシング攻撃に使用することができます参照Security Guideを読む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 

エンド

を取得するために、他のコントローラで使用して処理することを、このメソッドを持っていますreturn_toをフィルタリングして、自分のドメイン内のURLだけにリダイレクトすることで、セキュリティを確保したいと考えています。

何か不足していますか?どのようにシンプルでエレガントな方法でこれを行うためのアイデアですか?

答えて

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

のようなものが大好きだと言いますどのように他人がこれをやっているかについてのフィードバック。

関連する問題