Corsi on-line

Content-Security-Policy header per proteggere le Web applications

Su Internet non esiste un livello di sicurezza pari al 100% per la protezione delle risorse e i dati gestiti attraverso una Web application, è però possibile avvicinarsi a tale soglia utilizzando alcuni accorgimenti; in certi casi tali soluzioni possono rivelarsi molto più semplici di quanto non si possa credere, come per esempio l’inserimento di un header che definisca in modo chiaro quale debba essere l’origine degli script utilizzati.

Cattura

E il caso dell’header Content-Security-Policy, esso dovrà essere associato ad un parametro attraverso il quale indicare l’URL del CDN (Content Delivery Network) autorizzato a mettere a disposizione le proprie librerie; ad esempio:

Content-Security-Policy: script-src 'self' https://apis.google.com

In pratica, grazie all’header proposto gli unici script accettati saranno quelli disponibili attraverso il dominio corrente (self) e il CDN di Google; la direttiva potrà essere specificata per:

  • script-src: codice JavaScript;
  • connect-src: XMLHttpRequest, WebSockets e EventSource;
  • font-src: fonts;
  • frame-src: frame;
  • img-src: immagini;
  • media-src: audio/video
  • object-src: plugin multimediali come per esempio Adobe Flash;
  • style-src: fogli si stile CSS.

Vincolando e restringendo le sorgenti degli script e delle altre risorse che potrebbero essere veicolo di un attacco, il livello di protezione di una Web application contro azioni basate su XSS (Cross-site scripting), CSRF (Cross-site request forgery) o clickjacking risulterà molto più elevato.

Nel caso in cui si utilizzi un unico CDN per il caricamento di tutte le risorse esterne, sarà possibile utilizzare l’attributo default-src in modo da definire l’header una sola volta:

Content-Security-Policy: default-src https://cdn.sitoweb.net; frame-src 'none'; object-src 'none'

Nello stesso modo, come indicato in esempio, sarà possibile escludere alcune risorse dall’azione dell’header passando l’argomento none al rispettivo attributo.

Per approfondire: html5rocks

Post correlati
I più letti del mese
Tematiche