Segurança: codificação de nome de cookie removida
O padrão de cookie HTTP permite apenas caracteres específicos em nomes e valores de cookie. Para dar suporte a caracteres não permitidos, o ASP.NET Core:
- Faz a codificação ao criar um cookie de resposta.
- Faz a descodificação ao criar um cookie de solicitação.
No ASP.NET Core 5.0, esse comportamento de codificação mudou em resposta a uma questão de segurança.
Para ver a discussão sobre isso, confira o problema do GitHub dotnet/aspnetcore#23578.
Versão introduzida
5.0 versão prévia 8
Comportamento antigo
Os nomes de cookie de resposta são codificados. Os nomes de cookie de resposta são decodificados.
Novo comportamento
A codificação e a decodificação de nomes de cookie foram removidas. Nas versões anteriores com suporte do ASP.NET Core, a equipe planeja atenuar o problema de decodificação in-loco. Além disso, chamar IResponseCookies.Append com um nome de cookie inválido gera uma exceção do tipo ArgumentException. A codificação e a decodificação de valores de cookie permanecem inalteradas.
Motivo da alteração
Um problema foi descoberto em várias estruturas da Web. A codificação e a decodificação podem permitir que um invasor ignore um recurso de segurança chamado prefixos de cookie falsificando prefixos reservados, como __Host-
, com valores codificados, como __%48ost-
. O ataque requer uma exploração secundária para injetar os cookies falsificados, como uma vulnerabilidade XSS (cross-site scripting), no site. Esses prefixos não são usados por padrão no ASP.NET Core nem em bibliotecas ou modelos Microsoft.Owin
.
Ação recomendada
Se você estiver migrando projetos para o ASP.NET Core 5.0 ou posterior, verifique se os nomes de cookie estão em conformidade com os requisitos de especificação de token: caracteres ASCII, excluindo controles e separadores "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT
. O uso de caracteres não ASCII em nomes de cookie ou em outros cabeçalhos HTTP pode causar uma exceção do servidor ou permitir que o cliente faça um arredondamento incorreto.
APIs afetadas
- HttpRequest.Cookies
- HttpResponse.Cookies
Microsoft.Owin.IOwinRequest.Cookies
Microsoft.Owin.IOwinResponse.Cookies
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de