Vai al contenuto principale
Sicurezza web UE: 10 passi verso un rating migliore · Part 1

HSTS in 5 minuti: perché il 72% dei siti UE lascia esposti i propri utenti

HTTP Strict Transport Security previene gli attacchi di downgrade — e manca su tre siti europei su quattro. Ecco come attivarlo.

· SiteGuardian

Parte 1 della serie "Sicurezza web UE: 10 passi verso un rating migliore"


Il problema in 30 secondi

Il vostro sito ha un certificato TLS. Bene. Ma quando un utente digita http://vostro-dominio.com — cosa succede?

Senza HSTS: il browser si connette in chiaro. Il sito reindirizza a HTTPS. Ma nei millisecondi tra la richiesta HTTP e il reindirizzamento, un attaccante sulla stessa rete (Wi-Fi di un bar, aeroporto, hotel) può dirottare la connessione. Man-in-the-middle, furto di cookie, hijacking di sessione — tutto banale.

Con HSTS: il browser sa già che questo dominio accetta solo HTTPS. Si connette direttamente in modo crittografato. Nessuna richiesta HTTP, nessun reindirizzamento, nessuna finestra di attacco.

Un header. Una riga. E il 72,4% dei siti europei non ce l'ha.


Cosa dicono i dati

Dal SiteGuardian Benchmark su oltre 700.000 siti web europei:

  • 27,6% ha HSTS attivo
  • 75,7% reindirizza a HTTPS — ma senza HSTS, il reindirizzamento è attaccabile
  • 24,3% non reindirizza nemmeno, nonostante un certificato valido

Ciò significa: tre siti su quattro con certificato TLS non lo usano in modo coerente. Il certificato c'è, la protezione no.


Cos'è esattamente HSTS?

HTTP Strict Transport Security (RFC 6797) è un header di risposta HTTP che dice al browser:

"Collegati a questo dominio per i prossimi X secondi esclusivamente tramite HTTPS. Ignora completamente HTTP."

L'header ha questo aspetto:

Strict-Transport-Security: max-age=31536000; includeSubDomains
  • max-age=31536000 — 1 anno (in secondi). Il browser ricorda l'istruzione per questo periodo.
  • includeSubDomains — si applica a tutti i sottodomini (api.vostro-dominio.com, mail.vostro-dominio.com, ecc.)

Dopo la prima visita, il browser si connette direttamente tramite HTTPS per ogni richiesta successiva — senza il passaggio per HTTP.


Come attivare HSTS

Apache (.htaccess o vhost.conf)

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Prerequisito: mod_headers deve essere abilitato.

Nginx

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Il always alla fine garantisce che l'header venga inviato anche sulle pagine di errore (4xx, 5xx).

Caddy

Caddy imposta HSTS automaticamente quando HTTPS è attivo. Non serve fare nulla.

Node.js / Express

app.use((req, res, next) => {
  res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
  next();
});

Oppure con il pacchetto helmet:

const helmet = require('helmet');
app.use(helmet.hsts({ maxAge: 31536000, includeSubDomains: true }));

WordPress

Il plugin "Really Simple SSL" o "HTTP Headers" abilita HSTS con un solo clic. In alternativa, aggiungetelo al .htaccess (vedi Apache sopra).

Hosting gestito (Cloudflare, AWS, Platform.sh, ecc.)

La maggior parte dei provider di hosting non imposta HSTS di default. Controllate la dashboard alla voce "Impostazioni SSL/TLS" o "Header HTTP". Se l'opzione non è disponibile, create un file .htaccess nella webroot.


Tre errori da evitare

1. Impostare un max-age troppo breve

max-age=86400 (1 giorno) protegge solo gli utenti che hanno visitato il sito nelle ultime 24 ore. Partite con 30 giorni (2592000), poi passate a 1 anno (31536000) una volta che tutto funziona.

2. Dimenticare includeSubDomains

Senza includeSubDomains, i vostri sottodomini restano raggiungibili via HTTP. Se mail.vostro-dominio.com o intranet.vostro-dominio.com non hanno TLS, aggiungete includeSubDomains solo quando tutti i sottodomini supportano HTTPS — altrimenti smetteranno di funzionare.

3. Attivare HSTS senza un reindirizzamento HTTPS funzionante

HSTS richiede che il vostro sito sia effettivamente raggiungibile tramite HTTPS. Testate prima di attivare: navigate a https://vostro-dominio.com. Se vedete un errore, correggete prima la configurazione del certificato TLS.


HSTS Preload: il passo successivo

Una volta che HSTS funziona e siete sicuri che tutti i sottodomini supportano HTTPS, richiedete l'inclusione nella HSTS preload list:

  1. Impostate l'header su: max-age=31536000; includeSubDomains; preload
  2. Inviate il vostro dominio su: hstspreload.org

La preload list è integrata in Chrome, Firefox, Safari ed Edge. I domini nella lista vengono sempre caricati tramite HTTPS — anche alla primissima visita, prima che il browser abbia mai visto l'header HSTS.


Come si collegano NIS2 e GDPR

HSTS non è menzionato per nome in alcuna legge. Ma:

  • NIS2 Art. 21(2)(d) richiede "la sicurezza nell'acquisizione, nello sviluppo e nella manutenzione dei sistemi informativi e di rete, compresa la gestione e la divulgazione delle vulnerabilità". Un header HSTS mancante è una vulnerabilità nota e banalmente sfruttabile.

  • GDPR Art. 32 richiede "misure tecniche adeguate" per proteggere i dati personali. La crittografia del trasporto senza HSTS è come una serratura senza il chiavistello — sembra sicura, ma si apre con un solo gesto.


Controlla il tuo dominio

Attivate HSTS, aspettate 5 minuti e scansionate il vostro dominio:

https://siteguardian.io/scan

La scansione vi mostrerà immediatamente se HSTS è correttamente impostato, se includeSubDomains è attivo e se il vostro dominio è idoneo per la preload list.


La prossima settimana nella Parte 2: DMARC — da none a reject. Perché policy=none non protegge nessuno e come raggiungere una policy DMARC efficace in tre passaggi.

Questo articolo fa parte della serie "Sicurezza web UE: 10 passi verso un rating migliore". Dati dal SiteGuardian EU Web Security Benchmark su oltre 700.000 siti web europei.

How does your website compare?

SiteGuardian scans your domain across six security dimensions — free, instant, no registration.

Scan your website

Sicurezza web UE: 10 passi verso un rating migliore

This article is part of a weekly series on EU web security best practices.

SiteGuardian

2026-04-13

RSS