21 luglio 2026
Gli header di sicurezza che quasi nessun sito invia — e cosa blocca davvero ciascuno
Esegui curl -I su quasi qualsiasi sito di una piccola azienda e vedrai sempre la stessa cosa: qualche header di caching, magari una versione del server che non dovrebbe essere esposta, e nessuno della mezza dozzina di header di sicurezza che i browser supportano da anni. È una lacuna strana, perché gli header di sicurezza sono praticamente gratis — nessun software nuovo, nessun costo in prestazioni, una sola modifica di configurazione — e ognuno elimina un’intera categoria di attacchi, non un singolo bug.
Un header di sicurezza è semplicemente un’istruzione che il tuo server allega a ogni risposta, dicendo al browser del visitatore come trattare il tuo sito: cosa può caricare, se può essere incorporato altrove, se l’HTTP non cifrato è mai accettabile. Il browser fa rispettare le regole. Tu devi solo chiederlo.
Strict-Transport-Security (HSTS)
L’HTTPS protegge solo chi lo usa davvero. Senza HSTS, chi digita il tuo dominio senza prefisso fa prima una richiesta non cifrata — e su una rete ostile (pensa al Wi-Fi di un aeroporto) quella singola richiesta basta a un attaccante per intercettare la connessione e tenere la vittima su HTTP in chiaro, facendo da tramite verso il tuo sito reale. Si chiama SSL stripping, ed è uno strumento standard dal 2009.
Strict-Transport-Security: max-age=63072000 dice al browser: per i prossimi due anni, non contattare mai questo dominio via HTTP in chiaro, senza eccezioni. La finestra di downgrade sparisce dopo la prima visita.
Content-Security-Policy (CSP)
L’header più potente, e l’unico davvero delicato. La CSP è una lista di provenienze consentite per i contenuti delle tue pagine: script solo dal tuo dominio, niente plugin, niente embedding, immagini solo dalle fonti che indichi tu.
Il suo vero valore è come seconda linea di difesa. Gli attacchi di cross-site scripting e il malware iniettato funzionano, in ultima analisi, facendo eseguire al browser della vittima uno script che il proprietario del sito non ha mai voluto. Una CSP rigorosa significa che anche quando un attaccante trova il modo di iniettare qualcosa, il browser si rifiuta di eseguirlo — l’iniezione arriva, il payload non parte.
Poiché la CSP blocca tutto ciò che non riconosce, applicarla senza criterio può rompere il tuo stesso sito. La strada sensata è partire con Content-Security-Policy-Report-Only, che registra le violazioni senza imporre nulla, osservare per una settimana, e poi passare all’applicazione effettiva.
X-Content-Type-Options e frame-ancestors
Due piccoli header che conviene attivare insieme:
X-Content-Type-Options: nosniffimpedisce al browser di indovinare i tipi di file. Storicamente i browser “annusavano” il contenuto di un file e potevano essere ingannati fino a eseguire come script un’immagine o un file di testo caricato. Un header e le congetture finiscono.frame-ancestors 'none'(nella tua CSP, al posto del più vecchioX-Frame-Options) impedisce ad altri siti di caricare il tuo dentro un iframe invisibile. È il meccanismo dietro il clickjacking — il visitatore crede di cliccare un pulsante sulla pagina dell’attaccante mentre in realtà clicca qualcosa sul tuo sito.
Referrer-Policy
Quando un visitatore segue un link dal tuo sito, il suo browser comunica alla destinazione da dove arriva — di default, a volte con l’URL completo. Se i tuoi URL contengono qualcosa di significativo (aree riservate, ricerche, percorsi di reset password), lo stai facendo trapelare a ogni terza parte a cui le tue pagine rimandano. Referrer-Policy: strict-origin-when-cross-origin riduce l’informazione al solo nome del dominio, ed è un default ragionevole per tutti.
Come controllare il tuo sito
Due minuti, niente da installare: curl -I https://tuodominio.com mostra esattamente cosa invia il tuo server, e securityheaders.com gli assegna un voto e spiega ogni lacuna. Se il sito sta dietro una CDN o un host come Vercel o Netlify, di solito puoi aggiungere tutti questi header in un piccolo file di configurazione, senza toccare un server.
L’avvertenza onesta
Gli header sono cinture di sicurezza, non freni. Limitano i danni quando qualcos’altro fallisce — non aggiornano il plugin vulnerabile, non sistemano la password debole dell’amministratore, non validano l’input dei tuoi form. Un sito può prendere A+ sugli header ed essere comunque compromesso in modo banale attraverso un componente obsoleto. Attiva gli header perché costano quasi nulla e funzionano davvero, poi continua il lavoro poco glamour — patch, monitoraggio, backup — che quel voto non misura.