2017-07-27 6 views
0

は、私は、WebおよびRailsの両方に新しいですし、私はコントローラの初めにこのような何かを置くための一般的な使用であることがわかった:それはだ場合なぜbefore_action:authenticate_adminを使用するのが安全ですか?

before_action :authenticate_admin, only: [:only_admin] 

def authenticate_admin 
    unless current_user.admin? 
    flash[:alert] = "You are not admin!" 
    redirect_to '/' 
    end 
end 

を考慮するとクライアント側からこのリダイレクションを無視しても、私は本当に危険です。 redirect_toはどのように実装されていますか?なぜこの使用法は安全性を保証できますか?

答えて

0

redirect_to - あなたの現在のHTTPリクエストを終了し、クライアントに/への新しい呼び出しを開始する必要があります。これは公開ページとします。あなたはどこにでもリダイレクトすることができます。

つまり、HTTPリダイレクトです。

コードはまず、ユーザーが管理者であるかどうかを確認します。そうでない場合は、メッセージを「警告」し、クライアントを/にリダイレクトします。

このコールを削除してサーバー上でこのリダイレクトを無視できるかどうかを確認する場合は、リダイレクトを無視しないでください。そうでなければ、ユーザーが管理者であるが、何もしないでください。事実上、コードはクライアントに/に行く義務を負っています。そのURLは非管理者に安全に使用できると仮定すると、これは安全です。

クライアント(ブラウザ)がリダイレクトを無視できるかどうかを尋ねる場合、クライアントがこのリダイレクトを無視することはできません。レールは接続を終了し、HTTPリダイレクトを発行します。HTTPリダイレクトはHTTPレベルであるためブラウザは無視できません。

質問をより正確に再構成することを検討してください。

関連する問題