Meta description: Scopri cos'è un header di sicurezza e perché è importante per il tuo sito web. Guida pratica alla configurazione di tutti gli header di sicurezza HTTP essenziali.
Hai mai sentito parlare di security header e ti sei chiesto perché tutti ne parlano? Questi piccoli parametri di configurazione rappresentano una delle difese più efficaci contro molteplici tipi di attacchi web. Non richiedono competenze avanzate per essere implementati, ma possono fare la differenza tra un sito sicuro e uno vulnerabile.
In questo articolo, ti spiegherò cosa sono gli header di sicurezza, perché sono così importanti e come configurarli correttamente sul tuo server.
Cosa sono gli header di sicurezza HTTP
Gli header di sicurezza HTTP sono inviati dal server al browser come parte della risposta HTTP. Istruiscono il browser su come comportarsi quando interagisce con il tuo sito, stabilendo regole precise per prevenire attacchi come cross-site scripting (XSS), clickjacking e injection di vario tipo.
Immagina questi header come le istruzioni di sicurezza che dai a un vigile del corpo: gli dici esattamente cosa è permesso e cosa è vietato, riducendo drasticamente i rischi.
Perché gli header di sicurezza sono così importanti
L'importanza degli header di sicurezza è testimoniata dal fatto che Google li considera un fattore di ranking. Un sito con security header ben configurati riceve un boost nel posizionamento SEO e, cosa ancora più importante, offre una protezione reale agli utenti.
Senza questi header, il browser non ha istruzioni specifiche su come gestire situazioni potenzialmente pericolose, lasciando spazio a exploit che potrebbero compromettere i dati degli utenti.
I principali header di sicurezza e come configurarli
1. Content-Security-Policy (CSP)
L'header CSP è uno dei più potenti. Permette di definire esattamente quali risorse possono essere caricate e eseguite sul tuo sito, prevenendo attacchi XSS e injection.
Esempio di configurazione base:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' 'unsafe-inline'; img-src 'self' data:;
Come configurarlo:
- Inizia con una policy restrittiva
- Aggiungi gradualmente le eccezioni necessarie
- Utilizza la modalità
report-onlyper testare prima di applicare - Monitora i report CSP per identificare problemi
2. X-Frame-Options
Questo header protegge contro gli attacchi clickjacking, impedendo che il tuo sito venga incorporato in iframe di siti malevoli.
Valori possibili:
-
DENY: nessun iframe può visualizzare la pagina -
SAMEORIGIN: solo iframe dello stesso dominio sono permessi -
ALLOW-FORME uri: consente l'incorporamento da un URL specifico
Configurazione consigliata:
X-Frame-Options: SAMEORIGIN
3. X-Content-Type-Options
Impedisce al browser di interpretare i file come un tipo MIME diverso da quello dichiarato, prevenendo attacchi MIME-type confusion.
Configurazione:
X-Content-Type-Options: nosniff
4. Strict-Transport-Security (HSTS)
HSTS forza il browser a utilizzare sempre connessioni HTTPS, prevenendo attacchi di downgrade e garantendo che i dati viaggino sempre crittografati.
Configurazione:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Consiglio: includi il tuo sito nella lista di preload HSTS per una protezione permanente.
5. Referrer-Policy
Controlla quante informazioni sul referrer vengono incluse nelle richieste, proteggendo la privacy degli utenti e prevenendo la perdita di dati sensibili.
Configurazione consigliata:
Referrer-Policy: strict-origin-when-cross-origin
6. Permissions-Policy
Permette di abilitare o disabilitare specifiche funzionalità del browser come geolocazione, microfono, fotocamera e altre API potenzialmente rischiose.
Esempio:
Permissions-Policy: geolocation=(), microphone=(), camera=()
Come verificare la configurazione degli header di sicurezza
Dopo aver configurato gli header, è fondamentale verificarne il corretto funzionamento. Ecco alcuni strumenti gratuiti che puoi utilizzare:
- SecurityHeaders.com (securityheaders.com): analizza i tuoi header e ti assegna un voto da A+ a F
- Mozilla Observatory (observatory.mozilla.org): analisi completa con suggerimenti per migliorare
- Chrome DevTools: nella sezione Network puoi visualizzare tutti gli header di risposta
Come configurare gli header sui principali server web
Apache
Su Apache, puoi configurare gli header di sicurezza nel file .htaccess o nella configurazione del virtual host:
Header always set Content-Security-Policy "default-src 'self'"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set X-Content-Type-Options "nosniff"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Nginx
Su Nginx, gli header vengono configurati nel blocco server:
add_header Content-Security-Policy "default-src 'self'" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
Errori comuni da evitare
-
CSP troppo permissivo: evita di usare
unsafe-inlineeunsafe-evalse possibile - HSTS senza HTTPS: HSTS ha senso solo se il sito è già servito via HTTPS
- Header mancanti: ogni header ha uno scopo specifico, non trascurarne nessuno
- Test insufficienti: verifica sempre la configurazione in diversi browser
Conclusione
Gli header di sicurezza sono un componente essenziale della strategia di sicurezza di qualsiasi sito web. Sono relativamente semplici da configurare ma offrono una protezione reale contro molteplici tipi di attacchi.
Ricorda che la sicurezza è un processo continuo: verifica regolarmente la configurazione, aggiorna le policy CSP quando necessario e resta aggiornato sui nuovi header che vengono introdotti.
Hai domande sulla configurazione degli header di sicurezza? Hai bisogno di aiuto per implementarli sul tuo server? Lascia un commento qui sotto e sarò felice di aiutarti!
Se questo articolo ti è stato utile, condividilo con i colleghi sviluppatori. Più sviluppatori conoscono queste pratiche, più sicuro diventa il web per tutti.
Top comments (0)