Sécurité

Header di sicurezza HTTP: Guida completa

Configurare gli header di sicurezza HTTP per proteggere il vostro sito. HSTS, CSP, X-Frame-Options e tutti gli header essenziali.

5 mars 20254 min de lectureWarDek Team

Gli header di sicurezza HTTP sono istruzioni che il server invia al browser per definire le regole di sicurezza della pagina. Sono gratuiti, facili da configurare e bloccano intere categorie di attacchi. Eppure, la maggior parte dei siti italiani ne usa meno della metà.

Gli header essenziali (Top 6)

1. Strict-Transport-Security (HSTS)

Obbliga il browser a comunicare esclusivamente via HTTPS.

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

| Parametro | Significato | |-----------|-------------| | max-age=63072000 | Durata in secondi (2 anni) | | includeSubDomains | Applica a tutti i sottodomini | | preload | Inserisce il sito nella lista precaricata dei browser |

Rischio senza HSTS: attacco man-in-the-middle con downgrade a HTTP, anche se avete il certificato SSL.

2. Content-Security-Policy (CSP)

Lo scudo anti-XSS più potente disponibile. Definisce le origini autorizzate per ogni tipo di risorsa.

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.trusted.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; frame-ancestors 'none'

| Direttiva | Controlla | |-----------|-----------| | default-src | Fallback per tutte le risorse | | script-src | Sorgenti JavaScript | | style-src | Sorgenti CSS | | img-src | Sorgenti immagini | | font-src | Sorgenti font | | connect-src | Destinazioni XHR/Fetch/WebSocket | | frame-ancestors | Chi può incorporare la pagina in un iframe |

Approccio consigliato: iniziate con Content-Security-Policy-Report-Only per monitorare senza bloccare, poi passate a Content-Security-Policy quando la policy è stabile.

3. X-Content-Type-Options

Impedisce al browser di "indovinare" il tipo MIME di una risorsa (MIME sniffing).

X-Content-Type-Options: nosniff

Rischio senza: un file .txt con contenuto JavaScript potrebbe essere eseguito dal browser.

4. X-Frame-Options

Protegge dal clickjacking impedendo l'inclusione della pagina in un iframe.

X-Frame-Options: DENY

| Valore | Significato | |--------|-------------| | DENY | Mai incorporabile in iframe | | SAMEORIGIN | Solo dallo stesso dominio |

Nota: frame-ancestors nella CSP è la versione moderna e più flessibile. Usate entrambi per compatibilità.

5. Referrer-Policy

Controlla quali informazioni referrer vengono inviate quando l'utente naviga verso un altro sito.

Referrer-Policy: strict-origin-when-cross-origin

| Valore | Comportamento | |--------|--------------| | no-referrer | Non invia mai il referrer | | same-origin | Solo per navigazione sullo stesso dominio | | strict-origin-when-cross-origin | Origin per cross-site, URL completo per same-site |

6. Permissions-Policy

Controlla quali API del browser possono essere utilizzate dalla pagina e dai suoi iframe.

Permissions-Policy: camera=(), microphone=(), geolocation=(), payment=()

Disabilitate tutto ciò che non vi serve. Se il vostro sito non usa la geolocalizzazione, bloccatela.

Header aggiuntivi consigliati

Cross-Origin-Opener-Policy (COOP)

Cross-Origin-Opener-Policy: same-origin

Isola il contesto di navigazione della vostra finestra da quello di altre origini. Previene attacchi Spectre-like.

Cross-Origin-Resource-Policy (CORP)

Cross-Origin-Resource-Policy: same-origin

Impedisce ad altri siti di caricare le vostre risorse (immagini, script, ecc.).

Cross-Origin-Embedder-Policy (COEP)

Cross-Origin-Embedder-Policy: require-corp

Richiede che tutte le risorse cross-origin abbiano un header CORP esplicito.

Header da rimuovere

Alcuni header espongono informazioni che gli attaccanti possono sfruttare:

# RIMUOVERE in produzione:
Server: nginx/1.24.0          → Rivela versione server
X-Powered-By: Express         → Rivela framework
X-AspNet-Version: 4.0.30319   → Rivela versione .NET

Nginx:

server_tokens off;

Express.js:

app.disable('x-powered-by')

Configurazione per piattaforma

Nginx

add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "DENY" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
add_header Content-Security-Policy "default-src 'self'; script-src 'self'" always;

Apache (.htaccess)

Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "DENY"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"

Next.js (next.config.js)

const securityHeaders = [
  { key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubDomains; preload' },
  { key: 'X-Content-Type-Options', value: 'nosniff' },
  { key: 'X-Frame-Options', value: 'DENY' },
  { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
]

module.exports = {
  async headers() {
    return [{ source: '/(.*)', headers: securityHeaders }]
  },
}

Come verificare gli header

Usate strumenti online per verificare la configurazione:

  1. SecurityHeaders.com — Valutazione con punteggio A-F
  2. Mozilla Observatory — Analisi completa con raccomandazioni
  3. WarDek Scanner — Verifica automatizzata con contesto normativo

In alternativa, da terminale:

curl -I https://vostro-sito.it

Header di sicurezza e normativa italiana

Nel quadro della Direttiva NIS2, recepita in Italia con il D.Lgs. 138/2024, l'Agenzia per la Cybersicurezza Nazionale (ACN) richiede alle organizzazioni nei settori essenziali e importanti di adottare misure tecniche proporzionate ai rischi. Gli header di sicurezza HTTP rientrano tra le misure minime raccomandate dall'ACN e dall'AgID (Agenzia per l'Italia Digitale) per la protezione delle infrastrutture web.

In caso di data breach, il Garante per la Protezione dei Dati Personali valuta se l'organizzazione ha implementato misure tecniche adeguate ai sensi dell'art. 32 GDPR. L'assenza di header fondamentali come HSTS o CSP può essere considerata una carenza nella sicurezza tecnica, aggravando la posizione dell'organizzazione in sede di istruttoria.

Per le Pubbliche Amministrazioni italiane, le Linee Guida AgID per la sicurezza ICT prevedono esplicitamente la configurazione degli header di sicurezza HTTP tra i controlli di base da implementare su tutti i servizi web esposti a Internet.

Conclusione

Gli header di sicurezza sono l'intervento con il miglior rapporto costo/efficacia in cybersicurezza. Nessun costo, pochi minuti di configurazione e una protezione significativa contro le categorie di attacchi più comuni. Non c'è ragione per non implementarli oggi.


Scansiona il tuo sito web gratis con WarDek — OWASP, NIS2, GDPR, AI Act in un'unica scansione.

#header#http#sicurezza#hsts#csp

Scannez votre site gratuitement

WarDek détecte les vulnérabilités mentionnées dans cet article en quelques secondes.

Retour à Sécurité