Freigeben über


Sicherheit: Cookie Namenscodierung entfernt

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.

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