Dela via


Säkerhet: Kodning av cookienamn har tagits bort

HTTP-cookiestandarden tillåter endast specifika tecken i cookienamn och värden. För att stödja otillåtna tecken ASP.NET Core:

  • Kodar när du skapar en svarscookie.
  • Avkodar när du läser en cookie för begäran.

I ASP.NET Core 5.0 ändrades det här kodningsbeteendet som svar på ett säkerhetsproblem.

Mer information finns i GitHub-problem med dotnet/aspnetcore#23578.

Version introducerad

5.0 Förhandsversion 8

Gammalt beteende

Namn på svarscookie kodas. Namn på begärandecookies avkodas.

Nytt beteende

Kodning och avkodning av cookienamn har tagits bort. För tidigare versioner av ASP.NET Core planerar teamet att åtgärda avkodningsproblemet på plats. Dessutom genererar anrop IResponseCookies.Append med ett ogiltigt cookienamn ett undantag av typen ArgumentException. Kodning och avkodning av cookievärden förblir oförändrade.

Orsak till ändringen

Ett problem upptäcktes i flera webbramverk. Kodningen och avkodningen kan göra det möjligt för en angripare att kringgå en säkerhetsfunktion som kallas cookieprefix genom att förfalska reserverade prefix som __Host- med kodade värden som __%48ost-. Attacken kräver en sekundär exploatering för att mata in falska cookies, till exempel en XSS-sårbarhet (cross-site scripting) på webbplatsen. Dessa prefix används inte som standard i ASP.NET Core eller Microsoft.Owin bibliotek eller mallar.

Om du flyttar projekt till ASP.NET Core 5.0 eller senare kontrollerar du att deras cookienamn överensstämmer med kraven för tokenspecifikation: ASCII-tecken exklusive kontroller och avgränsare "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT. Användningen av icke-ASCII-tecken i cookienamn eller andra HTTP-huvuden kan orsaka ett undantag från servern eller bli felaktigt utlöst av klienten.

Berörda API:er