Delen via


Beveiliging: Cookienaamcodering verwijderd

De HTTP-cookiestandaard staat alleen specifieke tekens toe in cookienamen en -waarden. Ter ondersteuning van niet-toegestane tekens ASP.NET Core:

  • Codeert bij het creëren van een response cookie.
  • Decodeert bij het lezen van een aanvraagcookie.

In ASP.NET Core 5.0 is dit coderingsgedrag gewijzigd in reactie op een beveiligingsprobleem.

Voor discussie, zie GitHub-issue dotnet/aspnetcore#23578.

Geïntroduceerde versie

5.0 Preview 8

Oud gedrag

Namen van antwoordcookies worden gecodeerd. Cookienamen van aanvragen worden gedecodeerd.

Nieuw gedrag

Het coderen en decoderen van cookienamen is stopgezet. Voor eerdere ondersteunde versies van ASP.NET Core is het team van plan het decoderingsprobleem ter plaatse te verhelpen. Daarnaast genereert het aanroepen IResponseCookies.Append met een ongeldige cookienaam een uitzondering van het type ArgumentException. Het coderen en decoderen van cookiewaarden blijft ongewijzigd.

Reden voor wijziging

Er is een probleem ontdekt in meerdere webframeworks. Met de codering en decodering kan een aanvaller een beveiligingsfunctie met de naam cookievoorvoegsels omzeilen door gereserveerde voorvoegsels te spoofen, zoals __Host- met gecodeerde waarden, zoals __%48ost-. Voor de aanval is een secundaire aanval vereist om de vervalste cookies, zoals een XSS-beveiligingsprobleem (Cross-Site Scripting), in de website te injecteren. Deze voorvoegsels worden niet standaard gebruikt in ASP.NET Core of Microsoft.Owin bibliotheken of sjablonen.

Als u projecten verplaatst naar ASP.NET Core 5.0 of hoger, moet u ervoor zorgen dat de cookienamen voldoen aan de vereisten voor tokenspecificatie: ASCII-tekens, met uitzondering van besturingselementen en scheidingstekens "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT. Het gebruik van niet-ASCII-tekens in cookienamen of andere HTTP-headers kan een foutmelding van de server veroorzaken of verkeerd worden verwerkt door de client.

Betreffende API's