C'è stato un lungo dibattito sulla modellazione CSP, ho un'applicazione Web e uso JQuery in esso, per cui uso il sito principale di JQuery http://code.jquery.com/jquery-x.yy.z.min.js
per ospitarlo sul mio sito per funzionare, so che i CDN possono essere utile in casi come questo, potrei anche inserire questo nei miei tag di script https://ajax.googleapis.com/ajax/libs/jquery/x.yy.z/jquery.min.js
per risolvere lo stesso processo. Per quanto riguarda il tempo di caricamento, JQuery ospitato da Google è più veloce di code.jquery.com
.
Ora, diciamo che uso la seconda parte di ajax.googleapis.com per ospitare il mio sito JQuery sul mio sito web. Ora, per posizionare il meccanismo di difesa in profondità per evitare XSS, utilizzo le intestazioni CSP (Content-Security-Policy), Ora la prima cosa che faccio è White-List di script-src 'self' ajax.googleapis.com
. Ora, diciamo che ho una porzione sul mio sito Web dove Input viene riflesso senza filtri che possono causare XSS. Ora, gli script in linea come <script>alert(/xss/)</script>
otterrebbero Bloccato e Fornirmi protezione. Ma c'è un negativo in seguito, dato che ho elencato in bianco ajax.googleapis.com, qualsiasi attaccante può usare Angular JS 1.1.3 dallo stesso e causare XSS proprio come
"><script src="//ajax.googleapis.com/ajax/libs/angularjs/1.1.3/angular.min.js"></script><div ng-app ng-csp id=p ng-click=$event.view.alert(1337)><script async src=//ajax.googleapis.com/jsapi?callback=p.click></script>
Questo comporterà un attacco XSS, Ora il punto è Come potrei modificare la mia regola CSP in modo che blocchi ogni altro End-point del sito Whitelist che ho O se non è possibile di quanto immagino che l'API di Google CDN è sicuramente non è una scelta migliore di code.jquery.com
. Qualche spiegazione su come allenarsi?
Perché anche se uso code.jquery.com
e Whitelist, allora l'attaccante può usare la versione precedente di Jquery dallo stesso CDN e può erroneamente utilizzare la sua vulnerabilità per causare XSS. Quindi qual è la scommessa più sicura che posso mettere qui? Spiegare