Documentazione

Tenere al loro posto gli header che proteggono il sito

Gli header di sicurezza si perdono facilmente. Spesso sono impostati in un solo punto — un reverse proxy, una regola della CDN, un middleware del framework — e quando quel punto cambia e spariscono, non si rompe nulla per nessuno. Il sito ha lo stesso aspetto e funziona come prima; è solo la protezione contro clickjacking, contenuti misti o cross-site scripting a essere scomparsa senza far rumore. Uno scanner eseguito una volta l'anno prima o poi se ne accorge.

Pingsured controlla gli header a ogni esecuzione.

Cosa controllare

I controlli sugli header leggono solo gli header della risposta, non il corpo, quindi possono stare sullo stesso ping del tuo controllo di uptime:

HeaderOperatoreValore
Content-Security-Policycontieneframe-ancestors
Strict-Transport-Securitycorrisponde amax-age=\d{8,}
X-Content-Type-Optionsuguale anosniff
Referrer-Policyesiste
Servernon esiste

La riga HSTS è superata con un max-age di otto cifre o più — almeno 10.000.000 di secondi, circa quattro mesi — quindi un header ridotto a pochi minuti fallisce. Il controllo TLS descritto più sotto ne valuta la durata esatta. L'ultima riga è il caso opposto: un header che non dovrebbe esserci, come il banner con la versione che una nuova immagine del server ha riportato.

Insieme al controllo TLS

Un controllo TLS sullo stesso host copre l'altra metà una volta al giorno: se l'HSTS è abbastanza lungo secondo le linee guida di Mozilla, se la porta 80 reindirizza a HTTPS e se i cookie hanno l'attributo Secure. I controlli sugli header di un ping HTTP aggiungono gli header che scegli tu, all'intervallo che scegli tu.

Perché controllare gli header di sicurezza con Pingsured

  • A ogni esecuzione, non una volta l'anno. Un header perso in un deploy viene segnalato in pochi minuti, non al prossimo penetration test.
  • Gli header che ti interessano. Valori esatti, sottostringhe, espressioni regolari o semplice presenza, fino a 16 controlli sugli header per ping.
  • Ogni località per conto suo. Gli header impostati da una CDN possono variare da un nodo all'altro; un controllo da più località mostra dove ne manca uno.
  • Da quando, non solo se. Lo storico del ping mostra quando un header è sparito, e da quale località.

Limiti da tenere presenti

  • Un controllo sugli header valuta la risposta dell'URL che configuri. Le pagine servite da un'altra applicazione — un negozio, un help center su un sistema a parte — hanno bisogno di un ping proprio.
  • I valori degli header vengono confrontati, non interpretati: un controllo conferma che una CSP contiene frame-ancestors, non che la policy sia buona.