Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El estándar de cookies HTTP solo permite caracteres específicos en los nombres y valores de las cookies. Para admitir caracteres no permitidos, ASP.NET Core:
- Codifica al crear una cookie de respuesta.
- Descodifica al leer una cookie de solicitud.
En ASP.NET Core 5.0, este comportamiento de codificación cambió en respuesta a un problema de seguridad.
Para discutir, consulte el GitHub issue dotnet/aspnetcore#23578.
Versión introducida
5.0 (versión preliminar 8)
Comportamiento anterior
Los nombres de las cookies de respuesta se codifican. Los nombres de cookies de solicitud se descodifican.
Nuevo comportamiento
Se quitó la codificación y la descodificación de nombres de cookies. Para versiones compatibles anteriores de ASP.NET Core, el equipo planea mitigar el problema de descodificación de manera localizada. Además, la llamada IResponseCookies.Append con un nombre de cookie no válido produce una excepción de tipo ArgumentException. La codificación y la descodificación de valores de cookie 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 prefijos de cookies mediante la suplantación de 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.
Acción recomendada
Si va a mover proyectos a ASP.NET Core 5.0 o posterior, asegúrese de que sus nombres de cookies 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 los nombres de cookies u otros encabezados HTTP puede provocar una excepción por parte del servidor o un manejo incorrecto por parte del cliente.
Las APIs afectadas
- HttpRequest.Cookies
- HttpResponse.Cookies
Microsoft.Owin.IOwinRequest.CookiesMicrosoft.Owin.IOwinResponse.Cookies