Perche gli header di sicurezza sono importanti
Gli header di sicurezza HTTP sono istruzioni che il tuo web server invia al browser, indicandogli come comportarsi quando gestisce il contenuto del tuo sito. Sono una delle misure di sicurezza piu efficaci e meno costose che puoi implementare. Nessuna modifica al codice dell'applicazione. Nessuna nuova dipendenza. Solo poche righe di configurazione del server.
Eppure la maggior parte dei siti web che analizziamo non hanno header di sicurezza critici. Secondo l'analisi annuale di Scott Helme, meno del 15% dei primi milione di siti web ha un header Content-Security-Policy. Questa guida copre ogni header di sicurezza importante in dettaglio.
Content-Security-Policy (CSP)
CSP e l'header di sicurezza piu potente e complesso. Controlla quali risorse il browser puo caricare sulla tua pagina: script, stili, immagini, font, frame e altro. Un CSP correttamente configurato e la tua difesa piu forte contro gli attacchi Cross-Site Scripting (XSS).
Come funziona CSP
Definisci una policy che specifica le fonti consentite per ogni tipo di risorsa. Se il browser incontra una risorsa non consentita dalla policy, la blocca e segnala la violazione.
Direttive principali
| Direttiva | Controlla | Valori comuni |
|---|---|---|
default-src |
Fallback per tutti i tipi di risorse | 'self' |
script-src |
Fonti JavaScript | 'self', domini CDN specifici |
style-src |
Fonti CSS | 'self' 'unsafe-inline' |
img-src |
Fonti immagini | 'self' data: https: |
font-src |
Fonti font | 'self' |
frame-ancestors |
Chi puo incorporare il tuo sito | 'none' |
object-src |
Flash, applet Java | 'none' |
Il problema 'unsafe-inline'
Molti siti usano 'unsafe-inline' per gli script, il che neutralizza la protezione XSS del CSP. L'alternativa corretta e usare nonce o hash: genera un token casuale per ogni caricamento di pagina, aggiungilo all'header CSP e ai tag script.
Report CSP
Inizia con Content-Security-Policy-Report-Only per testare la tua policy senza bloccare nulla. Una volta sicuro che la policy non rompe funzionalita legittime, passa all'enforcement.
Errori comuni CSP
- Usare
'unsafe-inline'e'unsafe-eval'per gli script. - Wildcard eccessivamente permissivi.
- Dimenticare
object-src 'none'. - Mancanza di
base-uri. - Non monitorare i report.
X-Frame-Options
Controlla se il tuo sito puo essere incorporato in un iframe su un altro dominio. Protegge dagli attacchi di clickjacking.
Raccomandazione: X-Frame-Options: DENY
X-Content-Type-Options
Previene il MIME type sniffing. Un aggressore potrebbe caricare un file con estensione .jpg che in realta contiene JavaScript.
X-Content-Type-Options: nosniff
Referrer-Policy
Controlla quante informazioni referrer il browser invia quando si naviga dal tuo sito a un altro.
Raccomandazione: Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy
Controlla quali funzionalita del browser il tuo sito puo utilizzare: fotocamera, microfono, geolocalizzazione, pagamenti.
Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()
Strict-Transport-Security (HSTS)
Indica ai browser di connettersi al tuo sito solo tramite HTTPS. Per una discussione piu ampia su HTTPS e configurazione TLS, consulta la nostra guida ai certificati SSL/TLS.
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Strategia di distribuzione
- Inizia con
max-age=300(5 minuti). Testa tutto. - Aumenta a
max-age=86400(1 giorno). - Aumenta a
max-age=604800(1 settimana). - Vai a
max-age=31536000(1 anno) e aggiungiincludeSubDomainsepreload.
Esempi di implementazione
Nginx
Aggiungi queste righe al blocco server nel nginx.conf. Usa la keyword always per assicurarti che gli header vengano inviati anche per le risposte di errore.
Apache
Aggiungi al file .htaccess o alla configurazione del virtual host. Assicurati che mod_headers sia abilitato.
Cloudflare
Cloudflare offre Transform Rules, Workers e il file _headers per Cloudflare Pages.
Impatto sulla sicurezza
| Protezione | Senza header | Con header |
|---|---|---|
| Attacchi XSS | Vulnerabile | Mitigato da CSP |
| Clickjacking | Vulnerabile | Bloccato da X-Frame-Options |
| MIME sniffing | Vulnerabile | Prevenuto da X-Content-Type-Options |
| SSL stripping | Vulnerabile alla prima visita | Prevenuto da HSTS |
| Voto securityheaders.com | D o F | A o A+ |
Header di sicurezza e OWASP
Molti degli header discussi affrontano direttamente i rischi OWASP Top 10, in particolare gli attacchi di injection (A03:2021) e la configurazione errata della sicurezza (A05:2021). Per saperne di piu, leggi il nostro articolo OWASP Top 10 spiegato.
Piano di implementazione passo dopo passo
Fase 1: Vittorie rapide (Giorno 1)
X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy.
Fase 2: HSTS (Settimana 1-2)
Inizia con un max-age basso e aumenta gradualmente.
Fase 3: CSP (Settimana 2-4)
Distribuisci in modalita report-only, analizza, stringi, attiva l'enforcement.
Conclusione
Gli header di sicurezza sono una delle migliori misure di sicurezza in termini di rapporto costi-benefici. Non richiedono modifiche al codice, proteggono contro intere classi di attacchi e possono essere implementati in un pomeriggio.
Il tuo obiettivo dovrebbe essere un A+ su securityheaders.com. Se hai bisogno di aiuto, contatta il nostro team a Lugano. Aiutiamo le aziende in tutta la Svizzera a costruire applicazioni web sicure.
Vuoi sapere se il tuo sito è sicuro?
Richiedi un audit di sicurezza gratuito. In 48 ore ricevi un report completo.
Richiedi Audit Gratuito