web-dev-qa-db-ja.com

.Net Coreの.AspNetCore.Antiforgery.xxxxxxx Cookieとは何ですか?

.Net CoreでValidateAntiForgeryTokenを使用しようとしましたが、.AspNetCore.Antiforgery.xxxxxxx Cookieが見つかりませんでした。

この.AspNetCore.Antiforgery.xxxxxxx Cookieとは何ですか?

15
Sharif Mamun

ASP.NET Coreは、このCookieを探してX-CSRFトークンを見つけます。

ValidateAntiForgeryTokenは、このフィルターが適用されているアクションに対して行われたリクエストが、有効な偽造防止トークンが含まれていない限りブロックされるアクションフィルターです。

一般に、ASP.NET CoreはCookieまたはヘッダーでトークンを探す場合があります。だからあなたは状況を持っているかもしれません

  • cookieの代わりにヘッダーを使用してトークンを渡す
  • トークン付きのcookieの名前は、ASP.NET Coreが予期するものとは異なります。

既定では、ASP.NETコアは、DefaultCookiePrefix( ".AspNetCore.Antiforgery。")で始まる一意のCookie名を生成して予期します。

これは、偽造防止オプションCookieNameを使用してオーバーライドできます。

services.AddAntiforgery(options => options.CookieName = "X-CSRF-TOKEN-COOKIENAME");

。Net Core 2.0.0以降の場合、変更があります

参照: https://docs.Microsoft.com/en-us/dotnet/api/Microsoft.AspNetCore.Antiforgery.AntiforgeryOptions?view=aspnetcore-2.

そのためには以下を使用します:

services.AddAntiforgery(options => options.Cookie.Name = "X-CSRF-TOKEN-COOKIENAME");

ヘッダーの場合、名前は次のように指定できます。

services.AddAntiforgery(options => options.HeaderName = "X-XSRF-TOKEN");

調べてください:

16
Set