Seguridad: Cookie se ha quitado la codificación de nombres

El estándar HTTP cookie solo permite caracteres específicos en cookie nombres y valores. Para admitir caracteres no permitidos, ASP.NET Core:

  • Codifica al crear una respuesta cookie.
  • Descodifica al leer una solicitud cookie.

En ASP.NET Core 5.0, este comportamiento de codificación cambió en respuesta a un problema de seguridad.

Para la discusión, consulte el problema de GitHub dotnet/aspnetcore#23578.

Versión introducida

5.0 Preview 8

Comportamiento anterior

Los nombres de respuesta cookie se codifican. Los nombres de solicitud cookie se descodifican.

Nuevo comportamiento

La codificación y descodificación de nombres cookie fue eliminada. En el caso de versiones compatibles anteriores de ASP.NET Core, el equipo planea mitigar el problema de descodificación en contexto. Además, al llamar IResponseCookies.Append con un nombre no válido cookie , se produce una excepción de tipo ArgumentException. La codificación y la descodificación de cookie valores permanecen sin cambios.

Motivo del cambio

Se detectó un problema en varios marcos web. La codificación y la descodificación podrían permitir que un atacante omita una característica de seguridad denominada cookie prefijos suplantando prefijos reservados como __Host- con valores codificados como __%48ost-. El ataque requiere una vulnerabilidad secundaria para insertar las cookies suplantadas, como una vulnerabilidad de scripting entre sitios (XSS), en el sitio web. Estos prefijos no se usan de forma predeterminada en ASP.NET Core o en bibliotecas o Microsoft.Owin plantillas.

Si va a mover proyectos a ASP.NET Core 5.0 o posterior, asegúrese de que sus cookie nombres cumplen los requisitos de especificación del token: caracteres ASCII que excluyen controles y separadores ."(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT El uso de caracteres que no son ASCII en cookie nombres u otros encabezados HTTP puede provocar una excepción en el servidor o que el cliente los propague incorrectamente.

Las APIs afectadas