2016-04-27 6 views
1

私はいくつかの問題を引き起こしているので、antiForegryTokenの重要性を疑問に思っていました。@ Html.AntiForgeryToken()について

私は、ユーザーがロール "PremiumAnvändare"(スウェーデン語のPremiumUser)にいるかどうかを調べ、そうでなければ "rolenotfound"にリダイレクトするクラスがあります。

public ActionResult Create() 
    { 

     if (User.IsInRole("PremiumAnvändare")) 
     { 
      ViewBag.SammanhangsID = new SelectList(db.Sammanhangs, "SammanhangsID", "Namn"); 
      return View(); 


     } 
     Response.Redirect("rolenotfound"); 
     return View(); 
    } 

しかし、ユーザーがrolenotfoundにリダイレクトされたとき、私は、エラー

タイプの例外「System.Web.HttpExceptionは」 のSystem.Web.dllに発生したが、ユーザーには処理されませんでした取得コード

HTTPヘッダーが送信された後、サーバーはヘッダーを追加できません。

この

を削除することによって解決される@ Html.AntiForgeryToken()

は、私が何か間違ったことをやっているか、それがトークンを削除しても大丈夫でしょうか?私はそれを少し再考しました。私はそれがクロスサイト攻撃を防御することであると理解していますが、私たちがモバイルアプリを作っているので、これは問題になるとは思われません。しかし、私を修正して教えてください。そうすれば、私はこのことを正しく行うことができます。

+0

CSRF保護を適用するかどうかによって異なります –

+0

これらの攻撃は共通していますか? –

+0

あなたのサイトとユーザーのターゲットとなる可能性と魅力にかかっています。 「owaspのクロスサイトリクエスト偽造」(https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF))をご覧ください。 –

答えて

0

私は、これはしかし、レイアウトは、この場合には含まれていませんが、それはありません、反偽造トークンを使用してから私を妨げていなかった

return PartialView("rolenotfound"); 

Response.Redirect("rolenotfound"); 
     return View(); 

を変更することによってそれを解決私のプロジェクトの問題です。

0

私はあなたが持っている問題は、あなたがリダイレクト後にあなたの反応を終わらせていないということです。 Response.Redirect("rolenotfound");Response.Redirect("rolenotfound", true);の違いは、2番目のスレッドはスレッドを中止し、return View();の実行を防ぎます。

リダイレクトは実行されますが、return View();が実行され、System.Web.HttpExceptionがスローされます。

CSRFは私の意見では(少なくともあなたが攻撃者にとって魅力的なアプリケーションを持っている場合は)よく見られますが、この種の保護が必要かどうかは誰にも分かりません。