Utilizza un criterio HSTS efficace

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.

Browser Support

  • Chrome: 4.
  • Edge: 12.
  • Firefox: 4.
  • Safari: 7.

Source

Motivi del mancato superamento del controllo Lighthouse

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

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-age specifica 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 includeSubDomains applica l'intestazione a tutti i sottodomini dell'URL della pagina che invia inizialmente l'intestazione. Ad esempio, se google.com invia un'intestazione HSTS che include l'istruzione includeSubDomains, l'intestazione HSTS viene applicata a mail.google.com.
  • L'impostazione della direttiva preload e 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:

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

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

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