Come funziona il flag "Secure" dei cookie?


102

So che un cookie con secureflag non verrà inviato tramite una connessione non crittografata. Mi chiedo come funzioni in profondità.

Chi è responsabile per determinare se il cookie verrà inviato o meno?

Risposte:


92

Il client lo imposta solo per le connessioni crittografate e questo è definito in RFC 6265 :

L'attributo Secure limita l'ambito del cookie ai canali "protetti" (dove "protetto" è definito dall'agente utente). Quando un cookie ha l'attributo Secure, l'agente utente includerà il cookie in una richiesta HTTP solo se la richiesta viene trasmessa su un canale sicuro (tipicamente HTTP su Transport Layer Security (TLS) [RFC2818]).

Sebbene apparentemente utile per proteggere i cookie da attacchi di rete attivi, l'attributo Secure protegge solo la riservatezza del cookie. Un utente malintenzionato di rete attivo può sovrascrivere i cookie protetti da un canale non protetto, interrompendone l'integrità (vedere la Sezione 8.6 per maggiori dettagli).


4
nel caso in cui il lato client non abbia ancora i cookie e debbano essere inviati dal lato server (es. login) sarà il lato server a decidere di includere i cookie in risposta?
ted

3
Il server inizialmente imposta i cookie tramite "Set-Cookie headers"
Ivan

49

Solo un'altra parola sull'argomento:

Omettere secureperché il tuo sito web example.comè completamente https non è sufficiente.

Se il tuo utente sta raggiungendo esplicitamente http://example.com, verrà reindirizzato a, https://example.comma è già troppo tardi; la prima richiesta conteneva il cookie.


6
So che questo è vecchio, ma il precarico HSTS aiuta questa situazione impedendo che questo problema si verifichi frequentemente. Non è ancora risolto al 100%, ma è solo un'altra cosa da considerare se vuoi davvero evitare i cookie sicuri.
Mr. MonoChrome

5
@ Mr.MonoChrome Perché vuoi evitare i cookie sicuri?
MEMark

@ Mr.MonoChrome anche se alcuni browser più vecchi o con specifiche inferiori, credo, non supportano nemmeno HSTS
oldboy

1
Buon punto. Per le applicazioni .NET è meglio fare il reindirizzamento in IIS (o web.config) piuttosto che in modo programmatico (ad esempio globals.asax)
piris

Quindi, se non stavi reindirizzando da http a https e servissi solo su https, non avresti bisogno secure?
frena il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.