CertH certH
In questa pagina

HSTS spiegato: max-age, preload e cosa si rompe

Aggiornato il 2026-11-03 · 6 min di lettura

HSTS è l’unico header di sicurezza che può rendere un sito irraggiungibile, anche per il proprietario. Ed è anche richiesto per un A+. La distanza tra questi due fatti dipende interamente dalla disciplina nel rilascio.

Cosa fa davvero l’header

Strict-Transport-Security dice al browser che questo host deve essere contattato solo via HTTPS per i prossimi N secondi. Una volta ricevuto, il browser riscrive i link http:// interni, blocca il clic per aggirare gli errori di certificato e rifiuta l’HTTP in chiaro, tutto prima che qualsiasi richiesta lasci la macchina.

È per questo che difende da attacchi di downgrade che un redirect non può fermare: il redirect invia ancora la prima richiesta in chiaro, ed è esattamente quella che un attaccante sulla rete vuole intercettare.

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload

max-age è un conto alla rovescia che non puoi annullare

Il max-age è memorizzato sul client. Se servi un anno e poi togli l’header, ogni browser che l’ha già visto continua a imporre HTTPS fino a un anno. Non c’è nessun interruttore lato server per spegnerlo.

CertH considera 180 giorni (15552000 secondi) la soglia per A+. Un anno è il valore tipico in produzione. Sotto i 180 giorni HSTS resta conteggiato come attivo nel riepilogo, ma non sblocca A+.

includeSubDomains e preload sono decisioni separate

includeSubDomains estende la regola a ogni sottodominio. Se un solo sottodominio parla solo HTTP — uno strumento interno, un pannello di amministrazione legacy, un host di staging — diventa irraggiungibile per chiunque abbia visitato il dominio padre. Fai prima un audit del DNS.

Il preload va oltre: il dominio è incorporato in un elenco distribuito con i browser, quindi la regola vale già alla prima visita, prima di vedere qualsiasi header. La rimozione richiede mesi e una richiesta all’elenco di rimozione. Non aggiungere preload finché l’header non è stabile da almeno qualche mese.

  • •Servi l’header su ogni risposta HTTPS, comprese le pagine di errore: un 404 senza di esso non insegna nulla al browser.
  • •Non inviare mai HSTS su HTTP in chiaro; i browser lo ignorano per specifica, quindi un loop di redirect mal configurato non si sistema così.
  • •Controlla i sottodomini per servizi solo HTTP prima di aggiungere includeSubDomains.
  • •Aggiungi preload per ultimo, e solo dopo che il max-age è a un anno da un po’.

Un rilascio che non rompe nulla

Inizia con un max-age breve così un errore scade in fretta: max-age=300. Tienilo per una settimana e osserva sottodomini rotti e segnalazioni di contenuto misto. Poi passa a un giorno, poi a un mese, poi a un anno. Ogni passo è reversibile nella finestra precedente: è proprio questo il senso di partire corto.

Se qualcosa si rompe, la soluzione è servire HTTPS correttamente sull’host interessato, non rimuovere l’header, che non aiuta più nessuno che l’abbia già ricevuto.

FAQ

La mancanza di HSTS abbassa il punteggio?

Non toglie punti dalla base, ma blocca A+: il voto massimo richiede HSTS con almeno 180 giorni di max-age o preload. Un sito può fare 100 e restare una A senza di esso.

Posso usare HSTS senza possedere tutti i sottodomini?

Sì, purché tu ometta includeSubDomains. In quel caso l’header si applica solo all’host esatto che l’ha servito.

Leggi dopo