Condividi tramite


Sicurezza: Cookie la codifica dei nomi è stata rimossa

Lo standard HTTP cookie consente solo caratteri specifici nei nomi e nei cookie valori. Per supportare i caratteri non consentiti, ASP.NET Core:

  • La codifica avviene durante la creazione di una risposta cookie.
  • Decodifica durante la lettura di una richiesta cookie.

In ASP.NET Core 5.0 questo comportamento di codifica è cambiato in risposta a un problema di sicurezza.

Per informazioni, vedere Problema di GitHub dotnet/aspnetcore#23578.

Versione introdotta

5.0 Preview 8

Comportamento precedente

I nomi delle risposte cookie vengono codificati. I nomi delle richieste cookie vengono decodificati.

Nuovo comportamento

La codifica e la decodifica dei cookie nomi sono state rimosse. Per le versioni precedenti supportate di ASP.NET Core, il team prevede di attenuare il problema di decodifica sul posto. Inoltre, la chiamata IResponseCookies.Append con un nome non valido cookie genera un'eccezione di tipo ArgumentException. La codifica e la decodifica dei cookie valori rimangono invariate.

Motivo della modifica

È stato rilevato un problema in più framework Web. La codifica e la decodifica potrebbero consentire a un utente malintenzionato di aggirare una funzionalità di sicurezza denominata cookie prefissi effettuando lo spoofing di prefissi riservati mediante valori codificati come __%48ost-. L'attacco richiede un exploit secondario per inserire i cookie contraffatti, come una vulnerabilità di cross-site scripting (XSS), nel sito web. Questi prefissi non vengono usati per impostazione predefinita in ASP.NET Core o Microsoft.Owin librerie o modelli.

Se si spostano dei progetti in ASP.NET Core 5.0 o versione successiva, assicurarsi che i nomi cookie siano conformi ai requisiti di specifica del token: caratteri ASCII esclusi i controlli e i separatori "(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\" | <"> | "/" | "[" | "]" | "?" | "=" | "{" | "}" | SP | HT. L'uso di caratteri non-ASCII in nomi cookie o in altre intestazioni HTTP può generare un'eccezione sul server o essere gestito in modo non corretto dal client.

Le API interessate