Diventa Autore per CoreTech | Scopri di più
19/03/20 CoreTech Blog
HSTS è l'acronimo di HTTP Strict Transport Security. Si tratta di un metodo utilizzato dai siti Web per dichiarare che dovrebbe essere accessibile solo utilizzando una connessione sicura (HTTPS). Se un sito Web dichiara un criterio HSTS, il browser deve rifiutare tutte le connessioni HTTP e impedire agli utenti di accettare certificati SSL non sicuri. HSTS è attualmente supportato dalla maggior parte dei principali browser (solo alcuni browser per dispositivi mobili non riescono ad usarlo).
HTTP Strict Transport Security è stato definito come uno standard di sicurezza web nel 2012 in RFC 6797. L'obiettivo principale della creazione di questo standard era quello di aiutare a evitare attacchi man-in-the-middle (MITM) che utilizzano l’SSL stripping. Lo stripping SSL è una tecnica in cui un utente malintenzionato impone al browser di connettersi a un sito tramite HTTP in modo che possa intercettare i pacchetti e intercettare o modificare le informazioni riservate. HSTS è anche un buon metodo per proteggersi dal dirottamento di cookie.
In genere, quando si immette un URL nel browser Web, si ignora la parte del protocollo. Ad esempio, si digita www.acunetix.com, non http://www.acunetix.com. In tal caso, il browser presuppone che si desidera utilizzare il protocollo HTTP in modo da eseguire una richiesta HTTP per www.acunetix.com.
In questa fase, il server Web risponde con un reindirizzamento ( codice di risposta301 che punta al sito HTTPS. Il browser effettua una connessione HTTPS a www.acunetix.com. Questo è quando la protezione dei criteri di sicurezza HSTS inizia a usare un'intestazione di risposta HTTP:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
L'intestazione Strict-Transport-Security
fornisce istruzioni specifiche al browser. D'ora in poi, ogni connessione al sito e ai relativi sottodomini per l'anno successivo (31536000 secondi), dal momento in cui viene ricevuta questa intestazione, deve essere una connessione HTTPS. Le connessioni HTTP non sono consentite affatto. Se il browser riceve una richiesta di caricamento di una risorsa tramite HTTP, deve provare una richiesta HTTPS. Se HTTPS non è disponibile, la connessione deve essere terminata.
Inoltre, se il certificato non è valido, verrà impedito di effettuare una connessione. In genere, se un certificato non è valido (scaduto, auto firmato, firmato da una CA sconosciuta e così via) il browser visualizza un avviso che indica che è possibile eludere. Tuttavia, se il sito ha HSTS, il browser non vi permetterà di aggirare l'avviso a tutti. Per accedere al sito, è necessario rimuoverlo dall'elenco HSTS all'interno del browser.
L'intestazione Strict-Transport-Security
viene inviata per un determinato sito Web e copre un nome di dominio specifico. Pertanto, se si dispone dell'intestazione HSTS per www.acunetix.com, non verrà copreacunetix.com ma solo il sottodominio www. Per questo motivo, per una protezione completa, il sito Web deve includere una chiamata al dominio di base (in questo caso, acunetix.com) e ricevere un'intestazione Strict-Transport-Security
per tale dominio con la direttiva includeSubDomains
Purtroppo, la prima volta che si accede al sito web, non si è protetti da HSTS. Se il sito Web aggiunge un'intestazione HSTS a una connessione HTTP, tale intestazione viene ignorata. Ciò è dovuto al fatto che un utente malintenzionato può rimuovere o aggiungere intestazioni durante un attacco man-in-the-middle. L'intestazione HSTS non può essere considerata attendibile a meno che non venga recapitata tramite HTTPS.
Si deve anche sapere che il HSTS max-age viene aggiornato ogni volta che il browser legge l'intestazione e il valore massimo è di due anni. Ciò significa che la protezione è permanente fino a quando non passano più di due anni tra le tue visite. Se non si visita un sito web per due anni, viene trattato come un nuovo sito. Allo stesso tempo, se servi l'intestazione HSTS con max-age di 0, il browser tratterà il sito come uno nuovo al prossimo tentativo di connessione (che può essere utile per il test).
È possibile utilizzare un metodo di protezione aggiuntivo denominato elenco di precaricamento HSTS. Il progetto Chromium mantiene un elenco di siti web che utilizzano HSTS e l'elenco è distribuito con i browser. Se aggiungi il tuo sito web all'elenco di precaricamento, il browser controlla prima l'elenco interno in modo che il tuo sito web non sia mai accessibile tramite HTTP, nemmeno durante il primo tentativo di connessione. Questo metodo non fa parte dello standard HSTS, ma viene utilizzato da tutti i principali browser (Chrome, Firefox, Safari, Opera, IE11 e Edge).
L'unico metodo attualmente noto che potrebbe essere utilizzato per ignorare HSTS è un attacco basato su NTP. Se il computer client è suscettibile a un attacco NTP, può essere ingannato a scadere il criterio HSTS e accedere al sito una volta con HTTP.
Per aggiungere un dominio all'elenco di precaricamento HSTS, i siti per tale dominio devono soddisfare diversi requisiti. Ecco cosa devi fare per aggiungere il tuo dominio:
Strict-Transport-Security
su HTTPS per il dominio di base con max-age
di almeno 31536000 (1 anno), la direttiva includeSubDomains
e la direttiva preload
Vedere sopra per un esempio di tale intestazione HSTS valida.Per una maggiore sicurezza, l'elenco di precaricamento non è accessibile o scaricato dal browser. Viene distribuita come risorsa codificata con nuove versioni del browser. Ciò significa che ci vuole un bel po’ di tempo perché i risultati appaiano sulla lista e ci vuole molto tempo per un dominio da rimuovere dalla lista. Se si desidera aggiungere il sito all'elenco, è necessario assicurarsi di essere in grado di mantenere l'accesso HTTPS completo a tutte le risorse per un periodo di tempo prolungato. In caso contrario, si rischia che il sito web diventi completamente inaccessibile.
Quando si configura HSTS e lo si testa, potrebbe essere necessario cancellare la cache HSTS nel browser. Se si configura HSTS in modo non corretto, è possibile che vengano visualizzati errori che bloccheranno l'accesso al sito, a meno che non si cancellino i dati. Ecco i metodi più diffusi per diversi browser. Si noti, inoltre, che se il dominio è nell'elenco di precaricamento HSTS, la cancellazione della cache HSTS sarà inefficace e non è possibile forzare una connessione HTTP.
Per rimuovere un dominio dalla cache di Chrome HSTS, segui queste istruzioni:
In seguito, è possibile verificare se la rimozione è stata eseguita correttamente:
Ci sono molti metodi diversi per rimuovere le informazioni HSTS da Firefox per un determinato dominio. Tutti sono descritti in dettaglio in un articolo dedicato. Di seguito vi è il più semplice e più veloce, ma rimuove più di informazioni HSTS dalla cache.
Rimuovere le informazioni HSTS da Safari è molto facile:
Non è possibile rimuovere un dominio dalla cache HSTS per i browser Microsoft. Puoi disattivare HSTS solo temporaneamente in Internet Explorer 11 e solo in Windows 7 o Windows 8.1 (non in Windows 10). Le istruzioni complete sono disponibili nell'articolo del supporto tecnico Microsoft.