Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der HTTP-Standard cookie lässt nur bestimmte Zeichen in cookie Namen und Werten zu. Um den Umgang mit unzulässigen Zeichen zu ermöglichen, bietet ASP.NET Core:
- Codiert beim Erstellen einer Antwort cookie.
- Decodiert beim Lesen einer Anforderung cookie.
In ASP.NET Core 5.0 wurde dieses Codierungsverhalten aufgrund eines Sicherheitsproblems geändert.
Zur Diskussion siehe GitHub-Issue dotnet/aspnetcore#23578.
Eingeführt in Version
5.0 Vorschau 8
Altes Verhalten
Antwortnamen cookie werden codiert. Anfragenamen cookie werden dekodiert.
Neues Verhalten
Die Codierung und Dekodierung der cookie-Namen wurde entfernt. Für frühere unterstützte Versionen von ASP.NET Core plant das Team, das Decodierungsproblem direkt zu beheben. Darüber hinaus löst der Aufruf IResponseCookies.Append mit einem ungültigen cookie Namen eine Ausnahme vom Typ ArgumentExceptionaus. Die Codierung und Decodierung von cookie Werten bleibt unverändert.
Grund für Änderung
Ein Problem wurde in mehreren Webframeworks entdeckt. Die Codierung und Decodierung könnte es einem Angreifer ermöglichen, ein Sicherheitsmerkmal hinsichtlich cookie Präfixen zu umgehen, indem reservierte Präfixe wie __Host- mit codierten Werten wie __%48ost- gefälscht werden. Der Angriff erfordert einen sekundären Exploit, um die gefälschten Cookies, z. B. durch eine Cross-Site-Scripting (XSS)-Schwachstelle, in die Website einzuschleusen. Diese Präfixe werden in ASP.NET Core oder Bibliotheken oder Microsoft.Owin Vorlagen nicht standardmäßig verwendet.
Empfohlene Aktion
Wenn Sie Projekte in ASP.NET Core 5.0 oder höher verschieben, stellen Sie sicher, dass ihre cookie Namen den Tokenspezifikationsanforderungen entsprechen: ASCII-Zeichen ohne Steuerelemente und Trennzeichen "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT. Die Verwendung von Nicht-ASCII-Zeichen in cookie Namen oder anderen HTTP-Headern kann eine Ausnahme auf dem Server verursachen oder vom Client nicht ordnungsgemäß verarbeitet werden.
Betroffene APIs
- HttpRequest.Cookies
- HttpResponse.Cookies
Microsoft.Owin.IOwinRequest.CookiesMicrosoft.Owin.IOwinResponse.Cookies