HSTS (HTTP Strict Transport Security) è un meccanismo di sicurezza che è stato sviluppato per proteggere le connessioni HTTPS contro gli attacchi man in the middle e l’hijacking delle sessioni. Con l’implementazione HTTPS i web master possono segnalare ai browser, tramite informazioni opzionali nell’header HTTP, che un sito può essere richiamato per un arco di tempo definito esclusivamente per mezzo della crittografia SSL/TLS. Per questo viene utilizzato il campo di intestazione Strict-Transport-Security lato server, che comprende la direttiva obbligatoria max-age e può essere ampliato con le direttive opzionali includeSubDomains e preload:
Strict-Transport-Security: max-age=31536000
La direttiva max-age indica per quanto tempo un sito deve rimanere a disposizione crittografato. L’arco di tempo coinvolto viene definito in secondi. Un max-age di 31.536.000 secondi corrisponde quindi a un periodo di un anno.
Se un utente visita un sito protetto da HSTS per la prima volta, il browser riceve le seguenti istruzioni dal campo dell’intestazione Strict-Transport-Security:
- Tutti i link non crittografati al rispettivo sito devono essere convertiti in link crittografati (http:// diventa https://).
- Se la sicurezza di una connessione non può essere garantita, ad esempio per via di un certificato non valido, deve essere interrotta. L’utente visualizzerà così un messaggio di errore.
In alternativa c’è la possibilità di estendere le informazioni HSTS ai sottodomini. In questo caso il campo dell’intestazione Strict-Transport-Security viene aggiunto alla direttiva includeSubDomains, che segnala al browser come l’header HSTS non valga solo per l’host attuale (ad esempio www.example.com), ma anche per tutti i sottodomini del rispettivo dominio (ad esempio anche per blog.example.com o adserver.example.com).
Strict-Transport-Security: max-age=31536000; includeSubDomains
La direttiva preload consente di evidenziare le pagine web per il così chiamato “preloading”, per risolvere la questione che si verifica alla prima visita.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Senza il parametro preload, HSTS si ripercuote solo sulle visite future alle pagine: se un browser conosce le informazioni nell’header HSTS di un sito, le successive visualizzazioni vengono messe in atto conseguentemente. La prima volta che si visualizza un sito non si ricorre a questo meccanismo di sicurezza. I produttori di browser come Google e Mozilla offrono perciò la possibilità di inserire le pagine web in cosiddette liste di preload. Le pagine web che sono state registrate per un preloading sono visualizzabili solo tramite HTTPS. Le liste di preload vengono controllate centralmente dai produttori del browser e comunicate al browser degli utenti durante gli aggiornamenti.