Gli header HTTP permettono al server di dare al browser istruzioni di sicurezza prima ancora che la pagina sia completamente interpretata. Sono potenti, ma devono essere scelti in base al comportamento reale del sito.
HSTS: imporre HTTPS con prudenza
Strict-Transport-Security chiede al browser di tornare in HTTPS per un periodo definito. È appropriato quando l’intero sito e i sottodomini coinvolti funzionano correttamente in HTTPS.
La direttiva usa normalmente max-age. includeSubDomains estende la regola ai sottodomini, che devono quindi essere tutti pronti per HTTPS. Il preload è un impegno ancora più forte e la sua rimozione non è immediata. Durante la messa a punto è preferibile iniziare con una durata prudente e aumentarla dopo aver verificato l’infrastruttura.
Referrer-Policy: controllare le informazioni trasmesse
Referrer-Policy stabilisce quale parte dell’URL di origine può essere inviata durante navigazioni o richieste. Una policy come strict-origin-when-cross-origin può ridurre le informazioni inviate a siti esterni mantenendo più contesto sulla stessa origine.
Non mettere però segreti negli URL pensando che questa policy li protegga: cronologia, log e altri intermediari potrebbero averli già registrati.
Permissions-Policy: limitare le capacità
Fotocamera, microfono, geolocalizzazione e altre API potenti non devono essere disponibili ovunque per impostazione predefinita. Permissions-Policy permette di specificare quali origini possono utilizzare determinate funzionalità, anche all’interno di iframe.
È particolarmente utile quando un sito integra contenuti di terze parti: mostrare un componente non significa dovergli concedere tutte le capacità del browser.
Protezione dal framing
X-Frame-Options è ancora usato per controllare l’integrazione in iframe, mentre frame-ancestors nella CSP offre un controllo moderno e più flessibile. Evita configurazioni contraddittorie e testa le integrazioni realmente necessarie.