I protocolli in testo normale come HTTP possono essere vulnerabili ad attacchi di intercettazione in cui un utente malintenzionato è in grado di leggere i contenuti trasmessi. Fortunatamente, TLS (Transport Layer Security) può criptare il traffico e rendere notevolmente più difficile per gli attaccanti utilizzare questi dati se vengono acquisiti.
Tuttavia, è possibile per gli attaccanti aggirare TLS forzando le connessioni criptate a utilizzare HTTP in chiaro. Per risolvere questo problema, è stata introdotta l'intestazione di risposta HTTP Strict Transport Security (HSTS), che forza il browser dell'utente a visitare un sito web utilizzando solo TLS e non ricorrere al protocollo HTTP non protetto (per un periodo di tempo prestabilito).
Come non va a buon fine il controllo Lighthouse
Il controllo segnalerà i seguenti problemi con l'intestazione HSTS:
- Se non viene trovata alcuna intestazione HSTS.
- Se manca una delle direttive consigliate (
max-age
,includedSubDomains
,preload
) - Se la durata della direttiva
max-age
è inferiore a un anno (31536000 secondi). - Se si verifica un errore di sintassi durante l'analisi dell'intestazione, ad esempio una direttiva sconosciuta.
Configura un criterio HSTS sicuro
La configurazione ottimale dell'intestazione HSTS è la seguente:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- La direttiva
max-age
specifica il periodo di tempo (in secondi) durante il quale il browser dell'utente è costretto a visitare un sito web utilizzando solo TLS. Dopo questa data, sarà possibile raggiungere nuovamente il sito utilizzando il protocollo HTTP se il sito web non fornisce un'intestazione HSTS (o se sono presenti reindirizzamenti temporanei da HTTP a HTTPS). - L'impostazione della direttiva
includeSubDomains
comporterà l'applicazione dell'intestazione a tutti i sottodomini dell'URL della pagina che invia l'intestazione inizialmente. Ad esempio, se un'intestazione HSTS inviata da google.com include l'istruzioneincludeSubDomains
, l'intestazione HSTS verrà applicata anche su mail.google.com. - Se imposti la direttiva
preload
e invii il dominio al servizio di precaricamento HSTS, il dominio verrà compilato nei binari del browser che utilizzano l'elenco HSTS precaricato (non solo Google Chrome).
Esistono alcuni rischi durante l'implementazione dell'intestazione HSTS. Tutte le funzionalità che richiedono una connessione HTTP non criptata non funzioneranno per il periodo di tempo impostato nella direttiva max-age
. Potenzialmente anche più a lungo se viene applicata l'istruzione preload
.
Per ridurre i rischi associati all'implementazione, è consigliabile un approccio graduale:
Inizia con un piccolo
max-age
e aggiungi soloincludeSubDomains
(senzapreload
):max-age=3600; includeSubDomains
Dopo un periodo di attesa (ad es. una settimana) senza problemi segnalati, aumenta
max-age
, ad esempio:max-age=604800; includeSubDomains
Se questa fase iniziale va a buon fine per un periodo di tempo prolungato (ad es. tre mesi), il sito web e i relativi sottodomini devono essere aggiunti all'elenco di precaricamento HSTS e deve essere aggiunta la direttiva
preload
.max-age=63072000; includeSubDomains; preload