← Torna al blog

Gli Header di Sicurezza HTTP che il Vostro Sito Non Ha

C'e un test gratuito che potete eseguire subito sul vostro sito web aziendale. Andate su securityheaders.com, inserite il vostro dominio e cliccate scan. Otterrete un voto da A+ a F. Se il vostro sito e stato costruito da una tipica web agency in Ticino, vedrete una F. Forse una D se siete fortunati.

Quella F significa che al vostro sito mancano gli header di sicurezza HTTP che ogni sito dovrebbe avere. Questi header sono istruzioni dal vostro server web al browser del visitatore, che gli dicono come comportarsi quando carica il vostro sito. Senza di essi, il browser opera con impostazioni predefinite che lasciano il vostro sito e i vostri visitatori vulnerabili a diverse categorie di attacchi.

Cosa Sono gli Header di Sicurezza HTTP

Quando il browser richiede una pagina web, il server risponde con il contenuto della pagina e un insieme di header HTTP. Gli header trasportano metadati: il tipo di contenuto, istruzioni di caching, impostazioni dei cookie e (quando configurati) policy di sicurezza. Gli header di sicurezza sono un sottoinsieme di questi che istruiscono il browser ad abilitare o limitare comportamenti specifici.

Non costano nulla da implementare. Non richiedono l'acquisto di software. Sono modifiche di configurazione sul vostro server web o CDN. E bloccano intere categorie di attacchi.

Content-Security-Policy (CSP)

CSP e l'header di sicurezza piu potente e piu complesso. Dice al browser esattamente quali fonti di contenuto sono consentite sulla vostra pagina.

Cosa Previene

Cross-Site Scripting (XSS). Se un attaccante riesce a iniettare un tag <script> nella vostra pagina, CSP impedisce al browser di eseguirlo perche lo script non corrisponde alla policy. Il codice iniettato e morto all'arrivo.

Esempio di Policy

Content-Security-Policy: default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; frame-ancestors 'none';

Perche le Agenzie Non lo Implementano

CSP richiede la comprensione esatta di cosa il vostro sito carica e da dove. Un tipico sito aziendale potrebbe caricare script da Google Analytics, Google Tag Manager, Facebook Pixel, LinkedIn Insight, un widget di chat, un tool per i cookie, video YouTube incorporati e Google Maps. Ognuno deve essere esplicitamente autorizzato nel CSP.

Se sbagliate la policy, le cose si rompono. L'agenzia non vuole gestire il debugging, quindi salta interamente il CSP. Comprensibile ma non accettabile.

Punto di Partenza: Modalita Report-Only

Iniziate con Content-Security-Policy-Report-Only. Questo header non blocca nulla. Registra le violazioni cosi potete vedere cosa verrebbe bloccato, aggiustare la policy, e poi passare all'enforcement.

Strict-Transport-Security (HSTS)

HSTS dice al browser: "Usa sempre HTTPS per connetterti a questo sito. Mai HTTP."

Cosa Previene

Attacchi di SSL stripping. Senza HSTS, un attaccante sulla stessa rete puo intercettare la richiesta HTTP iniziale e degradare la connessione a HTTP non crittografato.

Esempio di Header

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

Approfondite la configurazione SSL/TLS nel nostro articolo sui certificati SSL e cosa proteggono realmente.

X-Frame-Options

Dice al browser se il vostro sito puo essere incorporato in un iframe su un altro sito.

Cosa Previene

Clickjacking. Un attaccante crea una pagina con il vostro sito caricato in un iframe trasparente sopra una pagina esca. L'utente pensa di cliccare sulla pagina esca, ma in realta sta cliccando sul vostro sito nascosto.

X-Frame-Options: DENY

X-Content-Type-Options

X-Content-Type-Options: nosniff

Previene il MIME type sniffing. Senza questo header, i browser cercano di "indovinare" il tipo di contenuto di un file esaminandone il contenuto, cosa che puo essere sfruttata per eseguire codice.

Referrer-Policy

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

Controlla quali informazioni di referrer vengono inviate quando un utente clicca un link dal vostro sito a un altro sito. Previene la fuga di informazioni sensibili presenti negli URL.

Permissions-Policy

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

Controlla quali funzionalita del browser il vostro sito puo usare. Se il vostro sito non ha bisogno della fotocamera, perche il browser dovrebbe permetterlo?

Cosa Significa il Vostro Voto

VotoSignificato
A+Tutti gli header raccomandati presenti e configurati correttamente.
ALa maggior parte degli header presenti. Piccoli miglioramenti possibili.
B-CAlcuni header presenti ma mancano quelli chiave (di solito CSP e/o Permissions-Policy).
DSolo header di base presenti. Lacune significative nella protezione.
FNessun o quasi nessun header di sicurezza. Il sito si affida interamente ai default del browser.

Prima e Dopo: Un Esempio Reale

Prima (Voto: F)

Content-Type: text/html; charset=UTF-8
Server: Apache/2.4.51
X-Powered-By: PHP/7.4.27

Il server pubblicizza le sue versioni software (utile per gli attaccanti) e non fornisce istruzioni di sicurezza al browser.

Dopo (Voto: A)

Server e versione PHP nascosti. Sei header di sicurezza istruiscono il browser a far rispettare policy di contenuto rigorose. La superficie di attacco e ridotta drasticamente.

Perche le Web Agency in Ticino Non Li Configurano

Verifichiamo decine di siti web all'anno in Ticino. Gli header di sicurezza mancano nell'80-90% dei casi. Le ragioni:

  • Non fanno parte della checklist standard.
  • CSP richiede tempo per essere configurato correttamente. Le agenzie lavorano con budget e tempistiche fisse.
  • Paura di rompere qualcosa. Un CSP mal configurato puo impedire il caricamento degli script.
  • Mancanza di conoscenza sulla sicurezza. Sviluppo web e sicurezza web sono discipline diverse.
  • "Il cliente non lo ha chiesto." Ma i clienti non chiedono nemmeno gli allarmi antincendio.

Guida all'Implementazione

Apache (.htaccess o httpd.conf)

Aggiungete queste righe al vostro file .htaccess:

Header always set Content-Security-Policy "default-src 'self'; script-src 'self' https://www.googletagmanager.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-ancestors 'none'"
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
Header always set X-Frame-Options "DENY"
Header always set X-Content-Type-Options "nosniff"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Header always unset X-Powered-By

Nginx (blocco server)

Aggiungete queste righe dentro il blocco server { }:

add_header Content-Security-Policy "..." always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "DENY" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
server_tokens off;

Cloudflare

Se usate Cloudflare, potete impostare gli header di sicurezza tramite Transform Rules nella dashboard. Cloudflare ha anche un'impostazione HSTS con un clic sotto SSL/TLS > Edge Certificates.

Test Dopo l'Implementazione

  1. Eseguite di nuovo securityheaders.com e verificate che il voto sia migliorato.
  2. Testate ogni pagina del sito, specialmente quelle con moduli, embed, video, mappe e widget di terze parti.
  3. Controllate la console del browser (F12 > Console) per violazioni CSP.
  4. Testate su piu browser (Chrome, Firefox, Safari).
  5. Monitorate Google Analytics per verificare che funzioni ancora.

Errori Comuni

  • CSP troppo restrittiva: Bloccare 'unsafe-inline' per gli script rompe la maggior parte dei siti WordPress.
  • HSTS su un sito con contenuto misto: Risolvete il contenuto misto prima di abilitare HSTS.
  • Dimenticare i sottodomini: Se impostate HSTS con includeSubDomains, ogni sottodominio deve supportare HTTPS.
  • Header duplicati: Se sia il server web che l'applicazione impostano lo stesso header, evitate duplicati.

Per una panoramica piu ampia, leggete la nostra guida dettagliata sull'implementazione degli header di sicurezza passo dopo passo. Per farci implementare gli header di sicurezza sul vostro sito, contattate il nostro team.

Vuoi sapere se il tuo sito è sicuro?

Richiedi un audit di sicurezza gratuito. In 48 ore ricevi un report completo.

Richiedi Audit Gratuito