HTTP Strict Transport Security
HTTP Strict Transport Security o HSTS (in italiano sicurezza rigida per il trasporto di HTTP) è una procedura che implementa una politica di sicurezza per le comunicazioni web, necessaria a proteggere il canale HTTPS da attacchi di degrado della sicurezza (downgrade) e assai utile per la protezione dai dirottamenti di sessione. HSTS permette al server web di dichiarare che i browser e ogni altro tipo di client debbano comunicare con esso esclusivamente attraverso connessioni sicure su protocollo HTTPS e non sul semplice HTTP[1]. La procedura è uno standard di Internet della IETF, normato dal RFC 6797.
La politica HSTS[2] è indicata dal server allo user agent specificando una particolare intestazione nei messaggi di risposta HTTP, denominata «Strict-Transport-Security» che specifica il periodo di tempo durante il quale il client dovrà accedere al server in modalità necessariamente sicura.
Storia della specifica
[modifica | modifica wikitesto]HSTS è la concretizzazione di uno degli aspetti della visione progettuale di Jeff Hodges e Andy Steingruebl per migliorare la sicurezza del web, e presentata nel 2010 all'interno del loro articolo 2010 intitolato The Need for Coherent Web Security Policy Framework(s).[3]
Le specifiche HSTS si basano sul contributo originale di Jackson e Barth descritto nell'articolo ForceHTTPS: Protecting High-Security Web Sites from Network Attacks.[4]
La prima bozza originale delle specifiche fu scritta da Jeff Hodges[5] di PayPal, Collin Jackson[6] e Adam Barth[7] e pubblicata 18 settembre 2009.[8]
La prima specifica di HSTS fu resa pubblica il 18 dicembre 2009 e corrispose all'ultima cosiddetta "versione della comunità", che beneficiava appunto del riscontro pubblico.[9]
In seguito all'approvazione del 2 ottobre 2012 da parte dell'IESG, la specifica di HSTS è stata pubblicata come RFC Proposed Standard (standard proposto) il 19 novembre 2012 nel RFC 6797[10]. La prima versione originale del documento fu però depositata già il 17 giugno 2010 come Internet-Draft, momento nel quale il titolo della specifica fu cambiato da "Strict Transport Security" (STS) al più preciso "HTTP Strict Transport Security".[11] Ciononostante, l'intestazione HTTP definita dalle specifiche ha mantenuto il nome di "Strict-Transport-Security".
Panoramica della procedura
[modifica | modifica wikitesto]Un server implementa la politica HSTS se emette la relativa intestazione in un messaggio di una comunicazione HTTPS (su HTTP tali intestazioni sono invece ignorate).[12] Per esempio, un server potrebbe inviare un'intestazione che richieda che ogni richiesta a lui diretta nell'anno successivo sia trasmessa necessariamente tramite HTTPS. In tal caso, dato che il parametro max-age è espresso in secondi e che 31.536.000 secondi sono una buona approssimazione di un anno, l'intestazione sarebbe:
Strict-Transport-Security: max-age=31536000; includeSubDomains;.
Quando un'applicazione web[