La domanda su dove è documentato questo RFC è stata sufficientemente risposta.
Ma perché?
Come per altre funzionalità di sicurezza, questa particolare caratteristica ("cookie sicuro") ha un solo scopo: evitare che uno spettatore / uno sniffer ottenga il tuo cookie.
Non intende essere una panacea contro tutti i possibili tipi di attacchi ai cookie, ma solo questo attacco molto specifico:
- Il browser presenta alcune credenziali a un server (tramite una connessione protetta).
- Il server crea una sessione e consegna il cookie all'utente (tramite una connessione protetta).
- Il browser invia nuovamente il cookie di sessione con ulteriori richieste (tramite connessioni sicure).
- Un utente malintenzionato riesce in qualche modo a fare del browser una connessione non sicura al server originale.
- L'utente malintenzionato annusa la richiesta HTTP e ora ha il cookie.
Possiamo supporre che 1., 2. e 3. siano più difficili da attaccare, quindi 4./5.
-
L'utente può essere addestrato a verificare che un modulo di accesso visualizzi un URL HTTPS e una "bandiera verde" accanto all'URL, a seconda del browser. Nel momento in cui inserisci le tue credenziali, un utente saggio può ragionevolmente aspettarsi di prestare attenzione all'URL, in questi giorni. (Questo è il modo in cui funziona il solito attacco di posta spam, ingannandoli per inserire il loro nome utente / pw su un URL arbitrario - un argomento per un altro giorno.)
-
È molto difficile attaccare a meno che il server non sia bacato: il server sa perfettamente se la connessione è HTTP o HTTPS, quindi creerà una sessione solo se arriva su HTTPS. Un sistema molto importante non sarà comunque in grado di ascoltarlo su HTTP.
-
Le richieste regolari non devono essere attaccate. Andranno su una connessione HTTPS sicura e andrà tutto bene.
-
Fare in modo che un browser si connetta a URL arbitrari è piuttosto facile: basta posizionare un tag da qualche parte o sparare ad alcuni AJAX se è possibile. E alcuni server possono scaricare le immagini statiche e tali comunque da una connessione non sicura per salvare la CPU, quindi un utente malintenzionato non dovrà assolutamente eseguire alcuna operazione.
Quindi, questo scenario è evitato dal cookie sicuro. Il cookie passerà solo su HTTPS, quindi l'utente malintenzionato non può annusare il cookie.
Certo, ci sono un sacco di altri vettori di attacco per ottenere ancora il cookie (man-in-the-middle contro HTTPS, leggendolo invece da Javascript (impedito dal flag "httponly"), facendo una richiesta HTTPS ad un sito web dell'attaccante con un cookie troppo lassista (prevenuto da politiche di origine originale o impostando correttamente il dominio dei cookie sul lato server) e così via).
Si noti che è difficile da proteggere contro 4. È abbastanza facile fare una richiesta del browser qualsiasi URL arbitrario. Si noti che non è necessario richiedere effettivamente un valido URL, è sufficiente che il browser invii la richiesta HTTP (incluso il cookie); non ti interessa il risultato, ed è impossibile per il server impedire al browser di inviare la richiesta non sicura in primo luogo, tranne che non ascoltando affatto su HTTP, cioè non avendo la porta TCP / IP aperta. Ma anche questo non è abbastanza; se l'utente passa attraverso un proxy (comune nelle intranet aziendali), il browser invierà comunque la richiesta HTTP al proxy (su HTTP) e un utente malintenzionato che annusa tra il browser e il proxy ha ancora il cookie, anche se il il server attuale non ha mai accettato la connessione TCP / IP.
TL; DR
Il cookie "sicuro" è pensato per proteggere da un problema molto specifico che altrimenti sarebbe impossibile da proteggere.
Non è pensato per essere protetto da un server bacato, pigro o mal configurato che invia il cookie su un canale non protetto in primo luogo.
Farlo in questo modo (vale a dire, una funzione contro un attacco specifico) è una buona cosa, ed è ciò che fa la maggior parte delle funzionalità di sicurezza. Ci si aspetta che ragionino su quali tipi di attacchi una funzione come questa protegge non ; e questo ragionamento è piuttosto semplice perché l'ambito della funzionalità è limitato.