Configurazione delle intestazioni di sicurezza HTTP su WordPress
Pubblicato: 2022-02-23La maggior parte dei browser moderni supporta una varietà di intestazioni di sicurezza HTTP per migliorare la sicurezza del tuo sito Web WordPress, proteggere meglio i tuoi visitatori da classi di attacchi del browser come clickjacking, scripting incrociato e altri attacchi comuni e persino migliorare la privacy dei visitatori del tuo sito in linea.
Questo articolo offre una panoramica di cosa sono queste intestazioni di sicurezza HTTP, spiega come funzionano e qual è il loro ambito. Spiega anche come aggiungere queste intestazioni di sicurezza HTTP al tuo sito Web per migliorare la sicurezza del tuo sito Web WordPress.
Che cos'è comunque un'intestazione di sicurezza HTTP?
Le intestazioni di sicurezza HTTP sono una serie di intestazioni HTTP 1 scambiati tra un client Web (browser) e un server Web che vengono utilizzati per specificare le impostazioni relative alla sicurezza della comunicazione HTTP tra un client Web e un server. L'abilitazione delle intestazioni di sicurezza sul tuo sito Web WordPress può migliorare la resilienza del tuo sito Web contro gli attacchi comuni, inclusi il cross-site scripting (XSS) e il clickjacking.
In che modo le intestazioni di sicurezza HTTP possono migliorare la sicurezza di WordPress
Le intestazioni di sicurezza HTTP possono aiutare a migliorare la sicurezza del tuo sito Web WordPress indicando al browser di abilitare di conseguenza una varietà di funzionalità di sicurezza. In molti casi, implementare le intestazioni giuste è un affare complicato e può anche avere risultati diversi (o essere totalmente inefficaci) nei browser meno recenti, quindi è meglio provare qualsiasi modifica in un ambiente di test o staging prima di applicare qualsiasi modifica su un sito WordPress dal vivo.
Le intestazioni di sicurezza HTTP più comunemente utilizzate
Quali intestazioni fanno cosa? Immergiamoci in una panoramica di alcune delle intestazioni di sicurezza HTTP più importanti e comunemente utilizzate.
Sicurezza dei trasporti rigorosa
L'intestazione HTTP Strict-Transport-Security indica al browser di applicare HTTP Strict Transport Security (HSTS) 2 . Un'intestazione HSTS indica al browser in visita di accedere sempre al sito tramite HTTPS (anziché HTTP), anche se l'utente (o un utente malintenzionato che tenta di eseguire un attacco Man-in-the-Middle) tenta di accedere al sito tramite HTTP, il il browser passerà forzatamente a HTTPS, anche se HTTP non è disponibile — in tal senso, dovresti abilitare HSTS solo se hai HTTPS abilitato e completamente funzionante senza problemi di contenuto misto 3 .
La seguente intestazione di risposta HTTP Strict Transport Security (HSTS) abilita HSTS per la durata di 1 anno (31536000 secondi).
Strict-Transport-Security: max-age=31536000
Politica sulla sicurezza dei contenuti
L'intestazione di sicurezza HTTP Content-Security-Policy è un'intestazione HTTP con molta potenza e configurabilità. Configura la Content-Security Policy (CSP) del browser, un insieme di funzionalità di sicurezza presenti nei browser moderni che fornisce un ulteriore livello di sicurezza che aiuta a rilevare e mitigare attacchi come Cross-Site Scripting (XSS) e attacchi di iniezione di dati.
Anche la politica di sicurezza dei contenuti (CSP) è notoriamente difficile da ottenere, poiché le impostazioni CSP corrette dipenderanno ampiamente dal sito Web in questione e dovrebbero essere ampiamente testate prima dell'implementazione, tanto è vero che ha una politica di sicurezza dei contenuti sorella -Solo rapporto 4 Intestazione HTTP utilizzata solo per testare CSP.
Quello che segue è un esempio di una politica CSP (Content-Security Policy) piuttosto semplice che consente solo il caricamento di risorse dall'origine da cui viene servito il sito Web.
Content-Security-Policy: default-src 'self'
Tuttavia, Content-Security Policy (CSP) è molto più configurabile di quanto mostrato in questo semplice esempio. CSP include altre direttive come script-src , style-src e img-src per specificare le origini da cui il browser può caricare risorse (ad esempio CSS, immagini e caratteri). Per un elenco completo di come è possibile configurare CSP, vedere le linee guida di riferimento rapido dei criteri di sicurezza dei contenuti.
Opzioni del tipo di contenuto X
L'intestazione di sicurezza HTTP X-Content-Type-Options è un'intestazione non standard rispettata da tutti i principali browser che impedisce gli attacchi Cross-site Scripting (XSS) causati dallo sniffing del tipo MIME 5 . Se presente, questa intestazione indica al browser di seguire rigorosamente i tipi MIME definiti nell'intestazione HTTP Content-Type e che il browser non deve tentare di rilevare il tipo MIME corretto per i dati di risposta stessi. L'intestazione ha un'unica direttiva: nosniff.
X-Content-Type-Options: nosniff
Intestazioni di sicurezza HTTP vecchie o non utilizzate
Ci sono anche una serie di intestazioni di sicurezza HTTP vecchie e inutilizzate. Non vengono più utilizzati o non funzionano più perché sono stati introdotti come soluzioni temporanee, esperimenti o anche iniziative non standard che da allora sono state deprecate o completamente sostituite. Di seguito è riportato un elenco di queste intestazioni di sicurezza HTTP.
Intestazioni di sicurezza HTTP sostituite da Content-Security-Policy
Opzioni X-Frame
L'intestazione di sicurezza HTTP X-Frame-Options è un'intestazione ora deprecata che è stata introdotta per la prima volta da Microsoft Internet Explorer (e adottata da altri browser con vari gradi di uniformità e compatibilità) per proteggere i browser da Cross-site Scripting (XSS), Clickjacking e altri attacchi che si basano sul posizionamento di un sito Web all'interno di un iframe.
Questa intestazione è stata ora sostituita dalla direttiva CSP (Content Security Policy) degli antenati dei frame. Si consiglia di utilizzare CSP con la direttiva frame-ancestors al posto di X-Frame-Options.
X-XSS-Protezione
L'intestazione di sicurezza HTTP X-XSS-Protection era un'intestazione non standard introdotta per abilitare o disabilitare le protezioni del browser contro gli attacchi XSS (cross-site scripting). In pratica, questa intestazione era spesso facile da aggirare per gli aggressori e, di conseguenza, viene ignorata dalla maggior parte dei browser moderni.
Pin chiave pubblica
L'intestazione di sicurezza HTTP Public-Key-Pins utilizzata per configurare la funzione di sicurezza HPKP (Public Key Pinning) introdotta in Google Chrome e Firefox per impedire lo spoofing del certificato TLS. HPKP funzionava facendo in modo che il server Web fornisse al browser una serie di hash crittografici delle chiavi pubbliche del certificato TLS utilizzate dal sito Web, che il browser utilizzerebbe a sua volta per confrontare i certificati che riceve dal server nelle richieste successive. Il problema era che HPKP era piuttosto complicato da gestire e spesso provocava configurazioni errate che potevano disabilitare completamente l'accesso al sito Web, pertanto non è più consigliabile utilizzarlo.
Aggiunta di intestazioni di sicurezza HTTP in WordPress
Le intestazioni di sicurezza HTTP funzionano meglio quando sono configurate sul server Web o, ove applicabile, sulla rete di distribuzione dei contenuti (CDN) o sul Web Application Firewall. Ciò consente di inviarli ad ogni richiesta. In alternativa, anche se meno ideale, puoi utilizzare un plug-in WordPress per impostare queste intestazioni per te.
Ora che abbiamo coperto lo scopo delle intestazioni di sicurezza HTTP, ecco alcuni modi in cui possono essere abilitate sul tuo sito Web WordPress.
Aggiunta di intestazioni di sicurezza HTTP in WordPress utilizzando Apache HTTP Server
Quello che segue è un esempio della configurazione per Apache HTTP Server richiesta per abilitare HTTP Strict Transport Security (HSTS), X-Content-Type-Options e una semplice politica di sicurezza dei contenuti.
<ifModule mod_headers.c> Header set Strict-Transport-Security "max-age=31536000" Header set X-Content-Type-Options "nosniff" Header set Content-Security-Policy "default-src 'self'" </ifModule>
Aggiunta di intestazioni di sicurezza HTTP in WordPress utilizzando Nginx
Allo stesso modo, il seguente è un esempio della configurazione per Nginx richiesta per abilitare HTTP Strict Transport Security (HSTS), X-Content-Type-Options e una semplice politica di sicurezza dei contenuti.
server { add_header Strict-Transport-Security "max-age=31536000; always; add_header X-Content-Type-Options "nosniff" always; add_header Content-Security-Policy "default-src 'self'" always; }
Aggiunta di intestazioni di sicurezza HTTP in WordPress utilizzando un plug-in
In alternativa, sebbene meno efficace (poiché si basa su WordPress stesso per modificare le intestazioni), l'utilizzo di un plug-in WordPress potrebbe essere il modo più semplice per aggiungere intestazioni di sicurezza HTTP al tuo sito Web WordPress. Plugin come il plug-in Redirection ti consentono di aggiungere intestazioni HTTP personalizzate al tuo sito web.
Come controllare le intestazioni di sicurezza HTTP per un sito Web
Dopo aver aggiunto le intestazioni di sicurezza HTTP sul tuo sito Web WordPress, vorrai assicurarti che siano configurate correttamente e funzionino come previsto. Il modo più semplice per verificarlo è utilizzare uno strumento gratuito chiamato Security Headers 6 .
L'utilizzo dello strumento Intestazioni di sicurezza è semplice come inserire l'URL del tuo sito Web e premere "Scansione". Ti verrà quindi assegnato un voto da A+ a F insieme a una spiegazione di come è stato determinato quel voto.
Riferimenti utilizzati in questo articolo
↑ 1 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers |
---|---|
↑ 2 | https://owasp.org/www-project-secure-headers/#http-strict-transport-security |
↑ 3 | https://web.dev/what-is-mixed-content/ |
↑ 4 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only |
↑ 5 | https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types#mime_sniffing |
↑ 6 | https://securityheaders.com/ |