Dato che stai facendo un reindirizzamento 301 su HTTP, qualcuno potrebbe man-in-the-middle quella connessione e reindirizzarti ovunque volessero - in particolare potrebbero davvero non reindirizzarti affatto, e invece ottenere tra il tuo computer e https://login.example.com
, monitorando la tua connessione e servendoti il suo contenuto con il nome http://login.example.com
invece.
Un modo per mitigare questo è usare un'intestazione HTTP HSTS - quando l'utente carica prima la pagina, dice al browser che il tuo sito deve essere caricato su HTTPS solo fino a qualche data futura (la direttiva in genere ha un data di scadenza impostata nel lontano futuro). Ciò significa che una volta che l'utente si connette al tuo sito una volta tramite HTTPS, lo farà sempre in futuro fino alla scadenza della direttiva HSTS.
Questo lascia un ultimo scenario - diciamo che l'attaccante MITM la connessione PRIMA che il browser dell'utente veda mai l'intestazione HSTS dal tuo server. In tal caso, il browser dell'utente non sa mai che non deve utilizzare connessioni non HTTPS. Un modo per mitigare questo è includere il tuo sito web nell'elenco di precaricamento HSTS, il che significa che i browser Web già sapranno che il tuo sito è solo HTTPS. Chrome, Firefox, Safari, IE11 e Edge hanno tutti un elenco di precarichi HSTS che include l'Elenco precaricati HST di Chrome e in pochi passaggi puoi inviare anche il tuo sito - ulteriori informazioni sull'elenco precarico per Chrome HSTS .
Se inserisci il tuo sito nell'elenco di precarico HSTS e completi ciò che comporta, allora puoi avere la ragionevole certezza che chiunque usi nuove versioni di quei browser non sarà vulnerabile a un attacco di downgrade MITM da HTTPS a HTTP da parte di un aggressore casuale.
Ricorda che una volta che il tuo sito si trova nell'elenco di precaricamento dell'HSTS, non è molto rapido rimuoverlo dai browser di tutti, poiché qualsiasi browser che non è stato aggiornato (di nuovo) si aspetta che il tuo sito venga caricato solo tramite HTTPS.