ROAN Internet Agency Gorzow Wielkopolski LOGO - Siti web SEO Hosting
Carta

HSTS cos’è e come affrontarlo

HSTS (HTTP Strict Transport Security) è uno standard descritto in RFC 6797 che introduce la possibilità di specificare “Strict-Transport-Security” nell’intestazione, che, quando interpretata dal browser, farà sì che tutte le richieste a un dato dominio siano reindirizzate a HTTPS, e se questo non è possibile (nessun supporto per HTTPs), il browser dovrebbe visualizzare un errore e bloccare tale richiesta, informando l’utente dell’errore e di un possibile tentativo di lanciare un attacco MITM. Il browser ricorderà solo le impostazioni HSTS su una connessione criptata, l’intestazione in una connessione non criptata sarà ignorata. Come tale non c’è modo di disabilitare Strict Security su una connessione non criptata, quindi devi fare attenzione quando fai queste impostazioni, vedi hsts traps qui sotto. È anche importante ricordare che tutti i nuovi utenti che accedono al nostro sito per la prima volta non hanno un record STS per il nostro dominio e sono quindi vulnerabili agli attacchi. Tuttavia, questa restrizione può essere aggirata da una richiesta di precarico che sarà descritta.

Perché e quando usare HSTS

HSTS dovrebbe essere usato principalmente da domini che utilizzano la crittografia completa dei dati; per esempio, siti web di banche e istituzioni finanziarie o negozi online, dove non vogliamo che i nostri dati cadano in mani sbagliate o che il nostro cliente che usa la connessione WI-FI all’aeroporto sia vittima del MITM (man-in-the-middle attack), dove avviene l’avvelenamento del DNS e una persona ignara arriva su un sito web identico al nostro, cerca di accedere e qualcun altro prende la password. Se qualcuno non guarda la barra degli indirizzi, dove non c’è il lucchetto – non saprà che il sito dato è solo un tipico phishing (falso sito originale usato per estorcere password o altri dati). È qui che entra in gioco HSTS, se si vuole accedere a un sito web ‘example.co.uk’ che ha informazioni HSTS memorizzate su di esso, rifiuterà automaticamente il reindirizzamento al protocollo non criptato e mostrerà un avviso all’utente, eliminando il problema in cui l’utente non guarda nella barra degli indirizzi per assicurarsi che ci sia un lucchetto, inoltre il browser bloccherà la possibilità di aggiungere un’eccezione per quel dominio.

Quando NON usare HSTS e perché?

Non utilizzare HSTS se il tuo dominio contiene anche elementi non crittografati, come le immagini, e utilizza la crittografia solo quando si accede o si fanno acquisti. Poiché questo può aumentare il carico sul server a causa dell’aumento del volume di traffico criptato. Tuttavia, bisogna ricordare che i siti che sono solo parzialmente criptati espongono i loro utenti al rischio di attacco.

Questo può anche essere un problema se non avete una fonte affidabile di certificati, per esempio avete comprato un certificato ora ma non pensate di rinnovarlo perché è troppo costoso. Questo può essere aggirato usando un certificato gratuito sul sito StartSSL.

Come posso incorporare HSTS?

HSTS è abilitato inviando al browser client un Header con il contenuto appropriato, ad esempio
Strict-Transport-Security: max-age=31536000; includeSubDomains
Strict-Transport-Security: – Dice al browser che stiamo usando Strict Transport Security, o HSTS,
max-age=31536000 – in questo caso anno, valore in secondi, cioè per quanto tempo il browser deve trattare il nostro dominio come HSTS e ricordarsi di usare SSL/TLS per connettersi ad esso,
includeSubDomains – significa che anche i sottodomini devono essere criptati; qui devi fare attenzione se hai un tipico sottodominio per un blog dove è installato wordpress. Non memorizza dati validi e quindi non utilizza la crittografia, quindi se il nostro certificato non supporta questo dominio, non dovremmo aggiungere questa direttiva e finire con solo max-age. Perché se qualcuno entra nel nostro sito web example.pl, da cui andrà al nostro blog blog.example.pl, a causa del fatto che abbiamo incluso dei sottodomini sarà costretto a usare una connessione criptata e il nostro certificato è valido solo su example.pl. A questo punto, la persona non sarà in grado di accedere a blog.przyklad.co.uk.
In breve: basta aggiungere quanto segue nel file .htaccess del nostro sito:
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Per salvare i dati HSTS per l’anno successivo sul nostro sito e per includere i sottodomini, questo richiede – nel caso del server Apache – un modulo headers abilitato e supportato sul nostro server.
Per finire, dovremmo impostare un reindirizzamento 301 alla versione https come raccomandato da Google, solo nel caso in cui un link punta in modo errato o qualcuno ha inserito l’indirizzo sbagliato la prima volta che ha effettuato l’accesso e non aveva ancora una voce STS. Questo può essere fatto con una semplice voce:

Questa manovra sposterà tutti i visitatori dal link non protetto al link protetto. Questo richiede il supporto per il modulo di riscrittura nel server apache.
Poi testiamo le impostazioni:
curl -s -D- | grep "Strict-Transport-Security:"
Se il comando restituisce un’intestazione STS, allora abbiamo configurato correttamente il server.

Trappole HSTS e cosa evitare

Si prega di notare che HSTS registra nel browser client che il nostro sito dovrebbe essere in esecuzione su HTTPS e se non lo è allora si suppone che visualizzi un errore e non permetterà di aggiungere un’eccezione. Un ulteriore problema può verificarsi quando il certificato scade e noi non lo rinnoviamo o semplicemente vogliamo cancellarlo; questo può limitare l’accesso del cliente al nostro sito web, soprattutto se, per esempio, era sul nostro sito un mese fa e abbiamo disattivato l’intestazione STS (impostando max-age=0 solo una settimana fa) Tale persona non potrà accedere al nostro sito web. Se abbiamo intenzione di cancellare il certificato o se stiamo usando un certificato gratuito e viene compromesso, dovremo farne uno nuovo, probabilmente a pagamento, per non perdere i vecchi clienti che semplicemente non possono accedere al nostro sito web. Devi anche essere sicuro che avrai un certificato valido e che il tuo server supporterà le connessioni SSL per un massimo di sei mesi.
È anche importante ricordare che l’utente è protetto solo quando accede per la prima volta al nostro sito, poiché solo allora il browser è in grado di scaricare l’intestazione, l’eccezione è se il nostro sito ha una voce di precarica.

Precarico HSTS

Si tratta di aggiungere un tag preload all’intestazione HSTS e poi sottoporre la pagina agli sviluppatori del browser interessato, ad esempio per chrome e firefox si può usare il tag hsts preload che si collegherà al nostro server controllerà le intestazioni e se l’intestazione ha una voce preload e includeSubDomains che è per esempio: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload allora il nostro sito sarà aggiunto alla lista dei siti precaricati. Questo assicura che ogni browser nel mondo che utilizza questa lista saprà che la connessione al nostro sito deve essere fatta esclusivamente via HTTPS, e che non si può aggiungere nessuna eccezione a questo nel caso di un errore come un certificato. Un esempio di controllo potrebbe essere il tentativo di connettersi al dominio . Se questa pagina mostra un errore HSTS e non permette di aggiungere un’eccezione. Nel caso di IE versione 11, il browser mostrerà solo un avvertimento su un certificato non valido ma vi permetterà di aggiungere un’eccezione, il che significa che non supporta ancora HSTS che dovrebbe cambiare con il rilascio di una nuova versione già chiamata Microsoft Edge.

Sto ricevendo un errore HSTS come posso aggirarlo?

Non dovreste. Di solito l’errore HSTS significa che qualcuno sta cercando di impersonare il sito web che vuoi visitare. Tuttavia, se siete sicuri che si tratta di un errore causato ad esempio da un’impostazione errata sul vostro sito di prova o altro, allora potete rimuovere l’elenco HSTS:

In Firefox:

Chiudere tutte le schede di questo dominio, e nella storia (ctrl + h) cercare questo dominio, fare clic destro e dare eliminare tutto il sito.

Nella barra degli indirizzi digitate: “about:permissions” e lì inseriamo l’indirizzo del sito e in alto a destra diamo “forget page”. Riavvia il browser e vai al sito web senza hsts.

In Chrome:

Nella barra degli indirizzi digitate “chrome://net-internals/#hsts” e poi digitate il dominio che volete eliminare nel campo circolare: “Cancellare il dominio”. E proviamo di nuovo ad accedere al sito.

La informiamo che utilizzando il sito web, senza cambiare le impostazioni del suo browser, lei accetta la politica sulla privacy e la memorizzazione dei cookie che permettono al nostro sito web di funzionare in modo efficiente.