2011-11-09 46 views
5

MVC3とフォーム認証にまったく依存しないカスタム認証方法を使用するWebサイトがあります。 web.configファイルでは、フォーム認証なしのAntiForgeryToken

<authentication mode="None"></authentication> 

を設定し、我々は/ HttpContext.Userどこかのコードで設定を使用することはありません。

if (String.Compare(filterContext.HttpContext.Request.HttpMethod, "post", true) == 0) 
{ 
    var forgery = new ValidateAntiForgeryTokenAttribute(); 
    forgery.OnAuthorization(filterContext); 
} 

です:私たちは、このコードでOnAuthorization内のすべての偽造防止のチェックを集中

A required anti-forgery token was not supplied or was invalid 

:@ Html.AntiForgeryToken()を使用して、いくつかのケースでは、ユーザは、このエラーメッセージを取得するときに問題がありますここでは例外が発生します。アプリケーションプールのリサイクル時に新しいキーが生成されないようにするにはdefined a machineKey in web.configがあります。これで問題は解決されませんでした。

次に、クライアントのブラウザがCookieを送信していない可能性があります。クッキーのロギングを開始し、RequestVerificationToken_Lwクッキーが送信される場合もあるが、他のクッキーが送信されない場合があることに気付きました.Googleアナリティクスのような他のクッキーはうまく送信されます。ブラウザの何かがクッキーを取り除いて他のクッキーを残していますか?

anti-forgery token depends on forms authenticationのようです。これは本当ですか?信頼性の高い方法でフォーム認証を使用しない場合、AntiForgeryTokenを使用し続ける方法。上記の方法は、90%以上のケースで機能しますが、なぜそれが一部の人々にとってうまくいかないのかを特定することはできません。

思考?
ありがとうございます!

+0

認証を使用していない場合、なぜ偽造防止偽造トークンが気になるのですか? CSRF攻撃の目的は、攻撃者がサイト上の認証されたユーザーの代わりにアクションを実行することです。そして、サイトが認証を使用しない場合、CSRFは無意味に見えます。 –

+0

私は認証を使用しています、フォーム認証ではありません。 – pbz

+0

どのような認証方法を使用していますか? –

答えて

0

一部のユーザーには常にこの問題がありますか?それとも、時のほんの一部ですか?また、それはすべての時間のメソッドのいくつかのために働くのですか、それとも同じアクションメソッドのために矛盾していますか?あなたはajaxコールを持っていますか?デフォルトの偽造トークン実装はAJAX呼び出しを処理しません。しかし、それを動作させるためのカスタムコードを書くことができます

+0

私はそれが答えでありコメントではなかった理由を知らない。 –

+0

返事ありがとう! 1)一部のユーザーはいつも持っているように見えますが、私が接触できるユーザーは技術的ではないので、あまり調査することができませんでした。私は彼らのIPとログのエラーを参照してください、私はそれが正当なことを知っている。 2)これらのページでAJAXの呼び出しはありません。私はこれらの制限を認識しており、必要な場所で作業しています。 – pbz

0

フォームの中に偽造防止トークンを追加していますか?偽造防止トークンは、クッキーではなく隠れたHTML要素を介してクライアントに保存されます。もう1つの質問は、使用しているブラウザのバージョンです。最新のものにアップグレードできますか?

@using (Html.BeginForm()) 
    { 
     @Html.AntiForgeryToken()... 
+0

はい、フォーム内にトークンを含めています。彼らが使っているバージョンはわかりませんが、Internet Explorerを使っています(私が連絡を取った一人の人によると)。これは他の人にも起こりましたが、残念ながら私はブラウザのバージョンを記録しませんでした。私は戻って、できるだけ多くのデータを得るためにログを取らなければならないかもしれません。私は他の人たちが以前にこの問題を遭遇したことを期待していました – pbz