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%以上のケースで機能しますが、なぜそれが一部の人々にとってうまくいかないのかを特定することはできません。
思考?
ありがとうございます!
認証を使用していない場合、なぜ偽造防止偽造トークンが気になるのですか? CSRF攻撃の目的は、攻撃者がサイト上の認証されたユーザーの代わりにアクションを実行することです。そして、サイトが認証を使用しない場合、CSRFは無意味に見えます。 –
私は認証を使用しています、フォーム認証ではありません。 – pbz
どのような認証方法を使用していますか? –