L'intestazione di risposta HTTP Content-Security-Policy permette al sito di controllare quali risorse l'agente utente carica per una data pagina. Tranne in casi particolari, il set di policy consiste principalmente nella specificazione dei punti di fine sorgente e script del server. Questo aiuterà a fermare attacchi cross-site scripting
Documentazione:Il login del link ipertestuale è visibile.
Questo articolo descrive la Politica di Sicurezza dei Contenuti del W3C, o CSP per abbreviare. Come suggerisce il nome, questa specifica è legata alla sicurezza dei contenuti ed è principalmente utilizzata per definire quali risorse una pagina può caricare e ridurre la presenza di XSS.
I primi Chrome supportavano il CSP tramite l'intestazione di risposta X-WebKit-CSP, mentre Firefox e IE supportavano X-Content-Security-Policy, e Chrome25 e Firefox23 iniziarono a supportare la standard Content-Security-Policy.
Possono essere raccolte informazioni sensibili su applicazioni web, come nomi utente, password, nomi di macchine e/o posizioni di file sensibili, Gli utenti principianti possono essere persuasi a fornire informazioni sensibili come nomi utente, password, numeri di carta di credito, numeri di previdenza sociale, ecc
Per prima cosa, creiamo un nuovo progetto ASP.NET MVC, creiamo un nuovo script js e carichiamo dinamicamente il codice js delle statistiche di Baidu, come segue:
Come mostrato nella figura sopra, possiamo vedere il codice script JS introdotto con successo in una terza parte (Baidu), se c'è codice malevolo nel JS di terze parti, come il furto di cookie, la modifica di contenuti, il passaggio di link, ecc.
Come posso fermare l'introduzione di script JS di terze parti insicuri?
Soluzione alternativa
Testa di rispostaAggiungi "Contenuto-Sicurezza-Policy"Per esempio:
direttiva | Esempio di valore di istruzione | illustrare | default-src | 'Sé' cnd.a.com | Definisci la politica di caricamento predefinita per tutti i tipi di risorse (JS, IMAGE, CSS, WEB FONT, RICHIESTE AJAX, IFRAME, MULTIMEDIA, ECC.) e usa la politica predefinita per certi tipi di risorse se non esiste una policy definita separata. | script-src | 'Sé' js.a.com | Definisci una politica di caricamento per JavaScript. | style-src | 'Sé' css.a.com | Definisci una policy di caricamento per uno stile. | IMG-SRC | 'Sé' img.a.com | Definisci una politica di caricamento per le immagini. | connect-src | 'Sé' | Caricamento delle politiche per richieste da Ajax, WebSockets, ecc. Se non consentito, il browser simula una risposta con uno stato di 400. | font-src | font.a.com | Politica di caricamento per WebFont. | object-src | 'Sé' | <object><embed> <applet> Politiche di caricamento per plugin come Flash introdotte per tag come , o . | media-src | media.a.com | <audio> <video> Strategie di caricamento per il multimediale HTML introdotte per tag come o . | frame-src | 'Sé' | Politica di caricamento per i frame. | Sandbox | Forme permissivi | Abilita il sandbox (simile alla proprietà sandbox di un iframe) per la risorsa richiesta. | Report-uri | /report-uri | Indica al browser a quale indirizzo inviare le informazioni di registro se la risorsa richiesta non è consentita dalla politica. Speciale: Se vuoi che il browser riporti solo i log e non blocchi nulla, puoi invece usare l'intestazione Content-Security-Policy-Report-Only (Segnalazione Contenuta). |
Modifichiamo il file web.config del progetto per aggiungere un'intestazione di risposta personalizzata come segue:
Ripeti il progetto come mostrato qui sotto:
Il browser ha bloccato con successo il caricamento degli script js di terze parti:
Rifiutato di caricare lo script 'https://hm.baidu.com/hm.js?6dbaac17dfeb2840b5b09d2dff6d2319' perché viola la seguente direttiva della Politica di Sicurezza dei Contenuti: "script-src 'self' http://localhost:56888/ ". Si noti che 'script-src-elem' non è stato esplicitamente impostato, quindi 'script-src' viene usato come riserva. (Fine)
|