Che cos'è HSTS e come protegge HTTPS dagli hacker?

Potresti aver fatto in modo che i tuoi siti web abbiano abilitato SSL, e il grazioso lucchetto di sicurezza nel tuo browser è verde. Tuttavia, potresti aver dimenticato il piccolo addetto alla sicurezza di HTTP, HTTP Strict Transport Security (HSTS).
Cos'è l'HSTS e come può aiutare a proteggere il tuo sito?
Che cos'è HTTPS?
Hyper Text Transfer Protocol Secure (HTTPS) è una versione protetta di un sito Web (HTTP). La crittografia è abilitata tramite il protocollo Secure Sockets Layer (SSL) ed è convalidata con un certificato SSL. Quando ci si connette a un sito Web HTTPS, le informazioni trasferite tra il sito Web e l'utente vengono crittografate.
Questa crittografia ti aiuta a proteggerti dal furto di dati tramite Man-in-the-Middle-Attacks (MITM). Il livello aggiuntivo di sicurezza aiuta anche a migliorare la reputazione del tuo sito web . In effetti, l'aggiunta di un certificato SSL è così semplice che molti host web lo aggiungeranno al tuo sito per impostazione predefinita, gratuitamente! Detto questo, HTTPS ha ancora alcuni difetti che HSTS può aiutare a risolvere.
Cos'è l'HSTS?
HSTS è un'intestazione di risposta che informa un browser che consente l'accesso ai siti Web solo tramite HTTPS. Questo costringe il tuo browser a essere in grado di accedere alla versione HTTPS del sito Web e alle risorse su di esso.
Potresti non sapere che, anche se hai impostato correttamente il certificato SSL e attivato HTTPS per il tuo sito web, la versione HTTP è ancora disponibile. Questo è vero anche se hai impostato l'inoltro usando 301 Reindirizzamento permanente.
Sebbene la politica HSTS sia in circolazione da un po 'di tempo, è stata formalmente implementata da Google solo a luglio 2016. Forse è perché non ne hai ancora sentito parlare.
L'attivazione di HSTS interromperà gli attacchi al protocollo SSL e il dirottamento dei cookie, due ulteriori vulnerabilità nei siti Web abilitati a SSL. E oltre a rendere un sito Web più sicuro, HSTS renderà i siti più veloci rimuovendo un passaggio nella procedura di caricamento.
Che cos'è lo stripping SSL?
Sebbene HTTPS sia un enorme miglioramento rispetto a HTTP, non è invulnerabile essere hackerato. Lo stripping SSL è un attacco MITM molto comune per i siti Web che utilizza il reindirizzamento per inviare utenti da un HTTP alla versione HTTPS del proprio sito web.
301 (permanente) e 302 (temporaneo) reindirizzamento funziona fondamentalmente in questo modo:
- Un utente digita google.com nella barra degli indirizzi del browser.
- Il browser inizialmente tenta di caricare http://google.com come predefinito.
- "Google.com" è impostato con un reindirizzamento permanente 301 a https://google.com .
- Il browser vede il reindirizzamento e carica invece https://google.com .
Con lo stripping SSL, l'hacker può utilizzare il tempo tra il passaggio 3 e il passaggio 4 per bloccare la richiesta di reindirizzamento e impedire al browser di caricare la versione sicura (HTTPS) del sito Web. Dato che stai accedendo a una versione non crittografata del sito web, qualsiasi dato inserito può essere rubato.
L'hacker può anche reindirizzarti a una copia del sito Web a cui stai tentando di accedere e acquisire tutti i dati al momento dell'inserimento, anche se sembra sicuro.
Google ha implementato passaggi in Chrome per interrompere alcuni tipi di reindirizzamento. Tuttavia, abilitando HSTS dovrebbe essere qualcosa che fai per impostazione predefinita per tutti i tuoi siti web d'ora in poi.
In che modo l'abilitazione di HSTS interrompe lo stripping di SSL?
L'abilitazione di HSTS impone al browser di caricare la versione protetta di un sito Web e ignora qualsiasi reindirizzamento e qualsiasi altra chiamata per l'apertura di una connessione HTTP. Ciò chiude la vulnerabilità di reindirizzamento esistente con un reindirizzamento 301 e 302.
C'è un lato negativo anche per HSTS, e cioè che il browser di un utente deve vedere l'intestazione HSTS almeno una volta prima che possa trarne vantaggio per le visite future. Ciò significa che dovranno passare attraverso il processo HTTP> HTTPS almeno una volta, lasciandoli vulnerabili la prima volta che visitano un sito Web abilitato per HSTS.
Per ovviare a ciò, Chrome precarica un elenco di siti Web che hanno l'HSTS abilitato. Gli utenti possono inviare essi stessi i siti Web abilitati per HSTS all'elenco di precarichi se soddisfano i criteri (semplici) richiesti.
I siti web aggiunti a questo elenco saranno codificati in modo fisso nelle versioni future degli aggiornamenti di Chrome. Si assicura che tutti coloro che visitano i siti Web abilitati HSTS nelle versioni aggiornate di Chrome rimarranno sicuri.
Firefox, Opera, Safari e Internet Explorer hanno il loro elenco precarico HSTS, ma sono basati sull'elenco Chrome su hstspreload.org .
Come abilitare HSTS sul tuo sito web
Per abilitare HSTS sul tuo sito web devi prima avere un certificato SSL valido. Se abiliti HSTS senza uno, il tuo sito non sarà disponibile a nessun visitatore, quindi assicurati che il tuo sito web e qualsiasi sottodominio funzionino su HTTPS prima di continuare.
Abilitare HSTS è abbastanza facile. Devi semplicemente aggiungere un'intestazione al file .htaccess sul tuo sito. L'intestazione che devi aggiungere è:
Strict-Transport-Security: max-age=31536000; includeSubDomains
Questo aggiunge un cookie di accesso di età massima di un anno ( che cos'è un cookie? ), Che include il tuo sito web e qualsiasi sottodominio. Una volta che un browser ha effettuato l'accesso al sito Web, non sarà in grado di accedere alla versione HTTP non protetta del sito Web per un anno. Assicurati che tutti i sottodomini di questo dominio siano inclusi nel certificato SSL e che sia abilitato HTTPS. Se lo dimentichi, i sottodomini non saranno accessibili dopo aver salvato il file .htaccess.
I siti web che mancano dell'opzione includeSubDomains possono esporre i visitatori a perdite di privacy consentendo ai sottodomini di manipolare i cookie. Con includeSubDomains abilitato, questi attacchi relativi ai cookie non saranno possibili.
Nota: prima di aggiungere l'età massima di un anno, testare l'intero sito Web con la durata massima di cinque minuti utilizzando: max-età = 300;
Google ti consiglia anche di testare il tuo sito web e le sue prestazioni (traffico) con un valore di una settimana e un mese prima di implementare un massimo di due anni.
Five minutes: Strict-Transport-Security: max-age=300; includ
eSubDomains One week: Strict-Transport-Security: max-age=604800; includeSubDomains One month: Strict-Transport-Security: max-age=2592000; includeSubDomains
Creazione dell'elenco precarico HSTS
Ormai dovresti avere familiarità con HSTS e perché è importante che il tuo sito lo usi. Mantenere online i visitatori del tuo sito web dovrebbe essere un elemento chiave del tuo piano del sito.
Per essere idoneo per l'elenco di precarico HSTS utilizzato da Chrome e altri browser, il sito Web deve soddisfare i seguenti requisiti:
- Serve un certificato SSL valido.
- Reindirizzare da HTTP a HTTPS sullo stesso host, se si sta ascoltando sulla porta 80.
- Serve tutti i sottodomini su HTTPS. In particolare, è necessario supportare HTTPS per www.subdomain se esiste un record DNS per tale sottodominio.
- Fornisci un'intestazione HSTS sul dominio di base per le richieste HTTPS:
- L'età massima deve essere di almeno 31536000 secondi (1 anno).
- La direttiva includeSubDomains deve essere specificata.
- La direttiva di precarico deve essere specificata.
- Se stai servendo un reindirizzamento aggiuntivo dal tuo sito HTTPS, tale reindirizzamento deve avere ancora l'intestazione HSTS (piuttosto che la pagina a cui reindirizza).
Se vuoi aggiungere il tuo sito web all'elenco di precarico HSTS, assicurati di aggiungere il tag di precarico richiesto. L'opzione "preload" significa che vuoi che il tuo sito web sia aggiunto all'elenco di precarico HST di Chrome. L'intestazione della risposta in .htaccess dovrebbe quindi assomigliare a questa:
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
Ti consigliamo di aggiungere il tuo sito web a hstspreload.org . I requisiti sono abbastanza facili da soddisfare e aiuteranno a proteggere i visitatori del tuo sito web e potenzialmente miglioreranno il ranking dei motori di ricerca del tuo sito web .
Leggi l'articolo completo: Che cos'è HSTS e come protegge HTTPS dagli hacker?
Fonte: Utilizzare