In che modo Content Security Policy (CSP) riduce significativamente il rischio e l'impatto degli attacchi XSS nei browser moderni?
È possibile aggirare CSP per eseguire XSS?
Sì, il CSP ha una lunga strada da percorrere per difendersi dall'XSS. Se esegui una ricerca su Google in "Content Security Policy XSS", i primi collegamenti spiegano come e perché.
Se hai problemi con l'utilizzo di Google, ecco alcuni link utili per spiegare come il CSP difende contro XSS:
Introduzione alla politica di sicurezza dei contenuti di Mike West
Introduzione alla politica di sicurezza dei contenuti di David Müller
Utilizzare la politica di sicurezza dei contenuti per prevenire Site Scripting (XSS) - SendSafely.com spiega come usano CSP sul loro sito.
Le promesse di Content Security Policy per proteggere il web
Il criterio CSP è applicato dal browser. Pertanto, supponendo di aver impostato un criterio CSP corretto e assumendo che il browser non abbia bug, non è possibile ignorare CSP. Questa è una delle attrazioni di CSP.
Tieni presente che alcuni browser (ad es. IE10 e versioni precedenti di IE, se ricordo correttamente) non supportano CSP.
Stai attento che CSP non è un proiettile d'argento:
CSP non interrompe l'XSS basato su DOM (noto anche come XSS lato client) se abiliti "non sicuro" nel tuo criterio CSP. Per evitare XSS basato su DOM, è necessario scrivere il Javascript in modo corretto per evitare di introdurre tali vulnerabilità.
CSP interrompe la maggior parte delle forme di iniezione di script, ma non interrompe l'iniezione di markup: vedi, ad esempio, Cartoline dal post- Mondo XSS così come l'attacco per l'iniezione di moduli HTML dalla Sezione III-A di Auto-Exfiltration: i pericoli del controllo del flusso di informazioni imposto dal browser (Chen et al, W2SP 2012). Quindi, vorrai evitare di introdurre bug di injection nel tuo codice.
Vedi anche Alcune cose oltre l'ambito di Content Security Policy per ulteriori discussioni su alcuni problemi che CSP non risolve.
CSP funziona applicando che determinate norme relative ai contenuti vengono inserite negli script, ad es. "nessun script esterno" o "nessun script in linea". Questo rende XSS molto più difficile, perché il 99% dei casi XSS coinvolge script inline o riferimenti a script fuori sito. L'unico svantaggio è che praticamente proibisce completamente JavaScript, e può essere molto difficile produrre un sito abilitato per JavaScript che aderisce al CSP.
Ignorare potrebbe essere possibile, a seconda del criterio utilizzato e del tipo di vulnerabilità che si ha, ma in generale è un sistema piuttosto solido. Per i siti con contenuti sensibili e senza JavaScript, consiglio vivamente di impostare una politica restrittiva.
Leggi altre domande sui tag xss content-security-policy