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
| Voto | Significato |
|---|---|
| A+ | Tutti gli header raccomandati presenti e configurati correttamente. |
| A | La maggior parte degli header presenti. Piccoli miglioramenti possibili. |
| B-C | Alcuni header presenti ma mancano quelli chiave (di solito CSP e/o Permissions-Policy). |
| D | Solo header di base presenti. Lacune significative nella protezione. |
| F | Nessun 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
- Eseguite di nuovo
securityheaders.come verificate che il voto sia migliorato. - Testate ogni pagina del sito, specialmente quelle con moduli, embed, video, mappe e widget di terze parti.
- Controllate la console del browser (F12 > Console) per violazioni CSP.
- Testate su piu browser (Chrome, Firefox, Safari).
- 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