7. Security Considerations (Considerazioni sulla sicurezza)
Questa sezione ha lo scopo di informare sviluppatori, fornitori di informazioni e utenti delle preoccupazioni di sicurezza note specifiche della memorizzazione nella cache HTTP. Considerazioni di sicurezza più generali sono affrontate in "HTTP/1.1" (sezione 11 di [HTTP/1.1]) e "HTTP Semantics" (sezione 17 di [HTTP]).
Le cache espongono una superficie di attacco aggiuntiva perché i contenuti della cache rappresentano un obiettivo attraente per lo sfruttamento malevolo. Poiché i contenuti della cache persistono attraverso le richieste HTTP, gli attacchi su una cache possono rivelare informazioni molto tempo dopo che un utente crede che le informazioni siano state rimosse dalla rete. Pertanto, i contenuti della cache devono essere protetti come informazioni sensibili.
In particolare, poiché le cache private sono limitate a un singolo utente, possono essere utilizzate per ricostruire l'attività di un utente. È quindi importante che gli user agent diano all'utente finale il controllo su di esse, ad esempio, consentendo loro di eliminare le risposte memorizzate per alcuni o tutti i server di origine.
7.1 Cache Poisoning (Avvelenamento della cache)
La memorizzazione di contenuti malevoli in una cache può amplificare la portata di un attaccante per influenzare più utenti. Questo attacco di "avvelenamento della cache (Cache Poisoning)" si verifica quando un attaccante utilizza difetti di implementazione, privilegi elevati o altre tecniche per inserire una risposta in una cache. Questo è particolarmente efficace quando una cache condivisa viene utilizzata per distribuire contenuti malevoli a molti client.
Un vettore comune per gli attacchi di avvelenamento della cache consiste nello sfruttare le differenze nell'analisi dei messaggi tra proxy e user agent; vedere la sezione 6.3 di [HTTP/1.1] per i requisiti pertinenti.
7.2 Timing Attacks (Attacchi temporali)
Poiché uno degli usi primari di una cache è ottimizzare le prestazioni, il suo uso può "far trapelare (Leak)" informazioni su quali risorse sono state richieste in precedenza.
Ad esempio, se un utente visita un sito e il suo browser memorizza nella cache alcune delle sue risposte, quindi naviga verso un secondo sito, quel sito può tentare di caricare risposte che sa esistere sul primo sito. Se si caricano rapidamente, si può presumere che l'utente abbia visitato quel sito, o persino una pagina specifica su di esso.
Questi "attacchi temporali (Timing Attacks)" possono essere mitigati aggiungendo più informazioni alla chiave della cache (ad esempio, l'identità del sito di riferimento, per prevenire l'attacco descritto sopra). Questo è talvolta chiamato "doppia chiave (Double Keying)".
7.3 Caching of Sensitive Information (Memorizzazione nella cache di informazioni sensibili)
Difetti di implementazione e distribuzione (spesso dovuti a un'incomprensione del funzionamento della cache) possono portare alla memorizzazione nella cache di informazioni sensibili (come credenziali di autenticazione), esponendole così a parti non autorizzate.
Si noti che il campo di intestazione di risposta Set-Cookie [COOKIE] non inibisce la memorizzazione nella cache; una risposta memorizzabile nella cache con un campo di intestazione Set-Cookie può essere (e spesso è) utilizzata per soddisfare richieste successive alla cache. I server che desiderano controllare la memorizzazione nella cache di queste risposte sono incoraggiati a emettere campi di intestazione di risposta Cache-Control appropriati.