È molto importante garantire la sicurezza del vostro sito WordPress, soprattutto quando si tratta di proteggersi dagli hacker. Ci sono molte misure da adottare e best practice da seguire per garantire che l’accesso al vostro sito WordPress sia bloccato. Se il vostro sito gira su HTTPS, allora una delle misure che vi consigliamo di implementare è l’header di sicurezza HSTS, in quanto può aiutarvi a prevenire gli attacchi man-in-the-middle (MitM) e il cookie hijacking.

Cos’è l’HSTS (Strict Transport Security)?

HSTS sta per HTTP Strict Transport Security ed è stato specificato dall’IETF nella RFC 6797 nel 2012. È stato creato come soluzione per forzare il browser a utilizzare connessioni sicure quando un sito è in esecuzione su HTTPS. Si tratta di un header di sicurezza che si aggiunge al server web e si riflette nell’header di risposta come Strict-Transport-Security. HSTS è importante perché indirizza le seguenti anomalie:

  • Qualsiasi tentativo da parte dei visitatori di utilizzare la versione non sicura (HTTP://) di una pagina del vostro sito sarà automaticamente inoltrata alla versione sicura (HTTPS://).
  • I vecchi bookmark HTTP e le persone che digitano la versione HTTP del vostro sito vi espongono ad attacchi man-in-the-middle. Si tratta di attacchi in cui l’aggressore altera la comunicazione tra le parti e fa loro credere di essere ancora in comunicazione tra loro.
  • Non consente di ignorare il messaggio del certificato non valido che, a sua volta, protegge il visitatore.
  • Cookie hijacking: Questo può accadere quando qualcuno ruba un cookie di sessione su una connessione non sicura. I cookie possono contenere ogni tipo di preziose informazioni, come informazioni sulla carta di credito, nomi, indirizzi, ecc.

Come Aggiungere HSTS al Vostro Sito WordPress

Tecnicamente aggiungete HSTS al server web stesso, e viene poi applicato alle richieste HTTP verso il vostro sito WordPress. Di solito si aggiunge un redirect 301 quando si fa un redirect da HTTP a HTTPS. Google ha affermato ufficialmente che è possibile utilizzare insieme sia i redirect 301 del server che l’intestazione HSTS.

Anche se i nostri sistemi preferiscono di default la versione HTTPS, potete renderlo più chiaro anche per altri motori di ricerca reindirizzando il sito HTTP alla versione HTTPS e implementando l’header HSTS sul vostro server. Zineb Ait Bahajji, Google Security Team

Esistono diversi tipi di direttive e/o livelli di sicurezza che possono essere applicati all’intestazione HSTS. Di seguito è riportato il più semplice, che utilizza la direttiva max-age. Questa definisce il tempo in secondi durante il quale il server web deve consegnare solo attraverso HTTPS.

Attivare HSTS in Apache

Aggiungete il seguente codice al vostro file host virtuale.

Header always set Strict-Transport-Security max-age=31536000

Attivare HSTS in NGINX

Aggiungete il seguente codice al file config di NGINX.

add_header Strict-Transport-Security "max-age=31536000";

Se siete clienti di Kinsta e volete aggiungere l’intestazione HSTS al vostro sito WordPress, potete aprire un ticket di supporto e noi lo aggiungeremo rapidamente per voi. In effetti, l’aggiunta dell’header HSTS offre dei vantaggi in termini di prestazioni. Se qualcuno prova a visitare il vostro sito via HTTP, invece di creare una richiesta HTTP, questo viene semplicemente reindirizzato alla versione HTTPS.

Preload HSTS

C’è anche il preload HSTS. Questo è fondamentalmente collocare il vostro sito web e/o il vostro dominio in un elenco HSTS approvato, integrato nel browser. Google compila ufficialmente questo elenco ed è utilizzato da Chrome, Firefox, Opera, Safari, IE11 e Edge. Potete trasmettere il vostro sito all’elenco ufficiale HSTS preload.

Preload HSTS
Preload HSTS

Tuttavia, per essere idonei, è necessario soddisfare alcuni requisiti aggiuntivi.

  1. Il server deve avere un certificato SSL/TLS valido (TLS e SSL: Qual è la Differenza?).
  2. Reindirizzare tutto il traffico verso HTTPS.
  3. Servire HSTS sul dominio di base.
  4. Servire tutti i sottodomini su HTTPS, in particolare il sottodominio www, se esiste.
  5. La scadenza deve essere di almeno 1 anno (31536000 secondi)
  6. Deve essere specificata la direttiva token includeSubdomains
  7. Deve essere specificata la direttiva token preload.

Per fare tutto questo è necessario aggiungere all’intestazione HSTS gli ulteriori sottodomini e le direttive di preload. Di seguito è riportato un esempio dell’intestazione HSTS aggiornata.

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";

Un giusto avvertimento: ottenere la rimozione del vostro dominio dalla lista di precaricamento può richiedere una procedura difficile e dispendiosa in termini di tempo, quindi assicuratevi che utilizzerete HTTPS nel lungo periodo.

Verificare l’Header HSTS

Ci sono alcuni semplici modi di controllare se l’HSTS funziona sul vostro sito WordPress. Potete lanciare Google Chrome Devtools, fare clic sulla scheda “Network” e guardare nella scheda delle intestazioni. Come potete vedere qui sotto, sul nostro sito web su Kinsta viene assegnato il valore HSTS “strict-transport-security: max-age=31536000”.

strict transport security http response

Potete anche effettuare la scansione del vostro sito WordPress con uno strumento online gratuito come securityheaders.io, che vi dirà se l’header strict-transport-security viene applicato o meno.

scan security headers

Supporto Browser di HSTS

Secondo Caniuse, il supporto del browser per HSTS è molto forte, oltre l’80% a livello globale e oltre il 95% negli Stati Uniti. Il supporto per HSTS in IE11 è stato aggiunto nel 2015 e attualmente l’unico browser moderno che non lo supporta è Opera Mini.

hsts browser support

Consigliamo anche di dare un’occhiata a questo articolo di Tim Kadlec su HSTS e Let’s Encrypt.

Effetti dell’HSTS sulla SEO

Dopo che il vostro sito web è stato approvato e incluso nell’elenco di HSTS preload, potreste notare avvertimenti da parte di Google Search Console, o altri strumenti SEO di terze parti, sui redirect 307. Questo perché, quando qualcuno tenta di visitare il vostro sito via HTTP, adesso nel browser avviene un redirect 307 invece di un redirect 301 (come si vede qui sotto).

HSTS - redirect 307 Strict-Transport-Security
HSTS – redirect 307 Strict-Transport-Security

Di solito, un redirect 307 viene utilizzato solo per i reindirizzamenti temporanei. Un redirect 301 viene, invece, utilizzato per gli URL che sono stati spostati in modo permanente. Quindi non dovrebbe usare un redirect 301? E che dire degli effetti sulla SEO?

Beh, in realtà, un redirect 301 avviene comunque dietro le quinte. Il redirect 307 avviene a livello di browser, non a livello di server. È possibile far girare il sito su uno strumento che controlla il redirect a livello di server, come httpstatus, e vedrete che, in realtà, un redirect 301 c’è ancora. Pertanto, non dovete preoccuparvi che l’header HSTS possa avere un impatto sulla vostro SEO.

HSTS redirect 301
HSTS redirect 301