Scopri in che modo la BBC sta implementando HSTS per migliorare la sicurezza e le prestazioni.

La BBC sta implementando HSTS per il proprio sito web per migliorare la sicurezza e le prestazioni. Scopri che cosa significa e in che modo HSTS può aiutarti.

L'adozione di HTTPS è in costante aumento negli ultimi anni. Secondo l'almanacco web del 2021 di HTTP Archive, circa il 91% di tutte le richieste per computer e dispositivi mobili è stato pubblicato tramite HTTPS. HTTPS non è solo un prerequisito necessario per l'utilizzo, ma è anche un prerequisito per l'utilizzo di funzionalità come Service Worker e protocolli moderni come HTTP/2 e HTTP/3.

Recentemente, Neil Craig, Lead Technical Architect presso la BBC, ha twittato che HTTP Strict Transport Security (HSTS) è in fase di implementazione graduale per bbc.com. Scopriamo cosa significa per la BBC e cosa potrebbe significare per te.

Il problema

Spesso i server web sono in ascolto delle richieste su entrambe le porte 80 e 443. La porta 80 è per le richieste HTTP non sicure, mentre la porta 443 è per le richieste HTTPS sicure. Questo può creare un problema perché quando inserisci nella barra degli indirizzi un indirizzo senza il prefisso di protocollo https://, come fa la maggior parte degli utenti, alcuni browser indirizzeranno il traffico alla versione HTTP non sicura di un sito per motivi precedenti (anche se non sempre).

Un modo comune per assicurarsi che gli utenti non accedano a una versione non sicura di un sito web è eseguire un reindirizzamento da HTTP a HTTPS per tutte le richieste. Questo certamente funzionerà, ma darà inizio alla seguente catena di eventi:

  1. Il server riceve una richiesta tramite HTTP.
  2. Il server emette un reindirizzamento per passare all'equivalente HTTPS della risorsa richiesta.
  3. Il server tramite HTTPS deve negoziare una connessione sicura con il browser.
  4. I contenuti vengono caricati come al solito.

Sebbene i reindirizzamenti funzionino correttamente, possono essere configurati in modo errato in modo da consentire comunque l'accesso alla versione non sicura di un sito. Anche se tutto è configurato correttamente, esiste comunque un problema di sicurezza, in quanto l'utente si connette comunque tramite HTTP non sicuro durante la fase di reindirizzamento, il che espone gli utenti alla possibilità di attacchi man in the middle pericolosi.

Inserisci HSTS

Supporto dei browser

  • 4
  • 12
  • 4
  • 7

Fonte

HSTS è dettato dall'intestazione della risposta HTTP Strict-Transport-Security per le richieste HTTPS. Quando questa opzione è impostata, le visite di ritorno a un sito web attivano un reindirizzamento speciale noto come "Reindirizzamento interno 307", ovvero quando il browser gestisce la logica di reindirizzamento anziché il server. In questo modo, la richiesta non viene intercettata, in quanto non esce mai dal browser, pertanto è più sicura. Come bonus aggiuntivo, questi tipi di reindirizzamento sono estremamente rapidi, pertanto viene eliminata qualsiasi latenza evidente durante un hop da HTTP a HTTPS.

Un reindirizzamento interno 307 da HTTP a HTTPS, attivato da un'intestazione HSTS. Il reindirizzamento 307 richiede solo 2 millisecondi.

Simile nella sintassi all'istruzione max-age di Cache-Control, un'intestazione HSTS specifica un'istruzione max-age. Questa istruzione prende un valore in secondi che specifica per quanto tempo il criterio viene applicato:

Strict-Transport-Security: max-age=3600

Nell'esempio precedente, il criterio dovrebbe avere effetto solo per un'ora.

Deployment di HSTS

Lo svantaggio principale del deployment di HSTS è che non sei pronto a trattare la tua origine come strettamente sicura. Supponiamo che tu abbia diversi sottodomini da cui gestisci le risorse, ma forse non tutti sono sicuri. In questo scenario, un'intestazione HSTS potrebbe danneggiare il tuo sito web.

La BBC ha adottato il giusto approccio all'implementazione di HSTS. Come menzionato da Neil Craig nel suo tweet, il valore iniziale impostato per bbc.com era max-age=10.

Questo approccio indica che il criterio inizialmente è stato efficace solo per dieci secondi. Questo non è un vantaggio importante, ma l'idea è capire se potrebbero esserci problemi con l'applicazione di HSTS. Con il passare del tempo, puoi aumentare le norme in modo incrementale e controllare se si verificano problemi. Al momento della stesura di questo documento, bbc.com sta specificando un criterio HSTS pari a max-age=86400 e questo quasi certamente aumenterà nel tempo.

Sicuramente non vorrai utilizzare un valore max-age lungo durante il deployment di HSTS. Potresti ritrovarti a cercare di risolvere improvvisamente i problemi mentre gli utenti riscontrano questi problemi. Inizia in piccolo e incrementa nel tempo. Quando hai la certezza che sia tutto a posto, puoi impostare l'istruzione max-age su un periodo di tempo molto più lungo. Ti consigliamo di impostare max-age su uno o due anni quando l'implementazione sarà completata.

Navigazione iniziali più sicure e veloci con l'elenco di precaricamento HSTS

Il criterio HSTS entra in vigore solo dopo la prima visita a un sito web, pertanto i vantaggi non sono presenti se la prima visita al sito. Sarà comunque necessario il reindirizzamento non sicuro. Tuttavia, puoi precaricare il criterio HSTS inviando il tuo sito web all'elenco di precaricamento HSTS, un elenco impostato come hardcoded di siti web che, a conoscenza del browser, sono strettamente HTTPS. Quando il tuo sito è nell'elenco di precaricamento, anche la prima visita è protetta e la latenza di reindirizzamento da HTTP a HTTPS tramite HSTS sarà istantanea.

Provalo

Se la BBC si sente a proprio agio a testare HSTS, ci sono buone probabilità che tu possa fare lo stesso per il tuo sito web. Prova a usare il tuo sito web e, se vuoi dare una marcia in più alle cose, aggiungilo all'elenco di precaricamento HSTS quando hai la certezza che non ci siano bug per offrire agli utenti un'esperienza più sicura e più veloce.