I protocolli di testo normale, come HTTP, possono essere vulnerabili agli attacchi di intercettazione, in cui un malintenzionato è in grado di leggere i contenuti trasmessi. Transport Layer Security (TLS) può criptare il traffico e rendere molto più difficile l'utilizzo di questi dati da parte degli autori degli attacchi, se acquisiti.
Tuttavia, gli autori degli attacchi possono aggirare TLS forzando le connessioni criptate a utilizzare HTTP non criptato. Per risolvere questo problema, puoi utilizzare l'intestazione di risposta HTTP Strict Transport Security (HSTS). HSTS impone al browser dell'utente di visitare un sito web utilizzando TLS e non consente di eseguire il fallback a HTTP in testo normale per un determinato periodo di tempo.
Motivi del mancato superamento del controllo Lighthouse
Il controllo segnala i seguenti problemi con l'intestazione HSTS:
- Se non viene trovata alcuna intestazione HSTS.
- Se manca una delle direttive consigliate (
max-age,includeSubDomains,preload) - Se la durata dell'istruzione
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.
Configurare una policy HSTS efficace
La configurazione ottimale dell'intestazione HSTS è la seguente:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
- La direttiva
max-agespecifica la quantità di tempo in cui il browser dell'utente è costretto a visitare un sito web solo utilizzando TLS (in secondi). Una volta trascorso il tempo, gli utenti possono raggiungere di nuovo il sito con HTTP semplice se non è presente un'intestazione HSTS fornita dal sito web (o reindirizzamenti temporanei da HTTP a HTTPS). - L'impostazione della direttiva
includeSubDomainsapplica l'intestazione a tutti i sottodomini dell'URL della pagina che invia inizialmente l'intestazione. Ad esempio, segoogle.cominvia un'intestazione HSTS che include l'istruzioneincludeSubDomains, l'intestazione HSTS viene applicata amail.google.com. - L'impostazione della direttiva
preloade l'invio del dominio al servizio di precaricamento HSTS compileranno il dominio in binari del browser che utilizzano l'elenco HSTS precaricato. Questo vale per più di 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. Potrebbe essere necessario ancora più tempo se viene applicata l'istruzione preload.
Per ridurre i rischi associati all'implementazione, è consigliabile un approccio graduale:
Inizia con un piccolo
max-agee aggiungi soloincludeSubDomains(nessunpreload):max-age=3600; includeSubDomainsDopo un periodo di raffreddamento (ad esempio una settimana) senza problemi segnalati, aumenta il
max-age. Ad esempio:max-age=604800; includeSubDomainsSe questa fase iniziale ha esito positivo per un periodo di tempo prolungato (ad esempio 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