Utilizza un criterio HSTS efficace

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

Avviso del controllo Lighthouse che indica che non è stata trovata alcuna intestazione di risposta HSTS.
Avviso del report Lighthouse che indica che non è stata trovata alcuna intestazione di risposta HSTS.

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'istruzione includeSubDomains, 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:

  1. Inizia con un piccolo max-age e aggiungi solo includeSubDomains (senza preload):

    max-age=3600; includeSubDomains
    
  2. Dopo un periodo di attesa (ad es. una settimana) senza problemi segnalati, aumenta max-age, ad esempio:

    max-age=604800; includeSubDomains
    
  3. 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