Non riesco a capire perché sia pericoloso, qualcuno mi ha detto che un utente malintenzionato può dirottare prima di caricare la versione HTTPS, ma come possibile.
In primo luogo, per rispondere alla tua domanda:
Non è che il reindirizzamento da HTTP a HTTPS sia più pericoloso del NON reindirizzamento a HTTPS. Il reindirizzamento da HTTP a HTTPS è infatti estremamente importante!
Il fatto è che se qualcuno sta colpendo un sito sensibile alla sicurezza su HTTP, qualcosa è già sbagliato . L'utente dovrebbe utilizzare HTTPS dall'inizio. Ovviamente, i browser Web non sono utili qui - sono predefiniti in HTTP a meno che l'utente non specifichi in modo specifico la parte https://
prima del nome di dominio - ma questo è un comportamento legacy di cui abbiamo praticamente a che fare.
La soluzione a questo problema è qualcosa chiamato HTTP Strict Transport Security (HSTS) . HSTS è un modo per un sito web di dire a un browser "hey, questo è un sito sicuro, non provi mai a connettermi su HTTP non sicuro, ok?". Tutti i browser moderni (incluso IE11, anche se non versioni precedenti di IE) supportano HSTS, ovvero useranno HTTPS solo per quel sito (anche se l'utente ha digitato http://
, il browser lo cambia in https://
prima di inviare la richiesta) .
HSTS ha un punto debole: il server deve dire al browser di non usare mai HTTP, il browser deve essere già connesso al server. La prima connessione di questo tipo è la più probabile da eseguire su HTTP piuttosto che su HTTPS (perché l'utente ha appena digitato il nome di dominio nella barra degli URL), quindi un utente malintenzionato ha quasi sempre almeno un colpo per dirottare la connessione (altro su quello in un secondo). Non bene. La soluzione è usare Preloading HSTS , che è un elenco integrato in tutti i browser di supporto HSTS dei siti che il proprietario ha specificamente richiesto a < em> mai essere visitato su HTTP; i browser sono preconfigurati per avere HSTS già applicati per tali siti.
Vale la pena notare che, per l'inclusione nell'elenco precarico HSTS, il tuo sito DEVE reindirizzare qualsiasi richiesta HTTP su HTTPS. Questa deve essere la prima cosa che fa, infatti, prima di eseguire qualsiasi altro reindirizzamento o pubblicazione di contenuti.
La risposta a "com'è possibile?" è un attacco intelligente chiamato " SSL stripping " (vedi precedente Q su Security.StackExchange ). In poche parole, quando il browser si connette a un sito tramite HTTP, non ha modo di sapere se sta effettivamente parlando al server che intendeva raggiungere, o ad un utente malintenzionato che ha reindirizzato o intercettato la richiesta. Quell'attaccante (se presente) potrebbe quindi effettuare una connessione HTTPS al sito reale, inviando insieme la stessa richiesta ricevuta dall'utente (solo questa volta tramite la connessione protetta), quindi decrittografare la risposta HTTPS e inviarla all'utente via testo semplice. Nel processo, l'utente malintenzionato può registrare e anche modificare le risposte (e le richieste), facendo cose come modificare qualsiasi collegamento HTTPS in un collegamento HTTP, in modo che l'utente non faccia clic su alcun collegamento o pulsante e passi a una connessione sicura ( che l'attaccante non potrebbe intercettare). Se l'utente non si accorge di essere su HTTP invece che su HTTPS, cosa che possono fare solo guardando attentamente la barra degli URL; il sito sembra altrimenti identico - l'utente potrebbe fare qualcosa come accedere al sito, che consentirebbe all'utente malintenzionato di vedere le credenziali dell'utente. Un attaccante che sta facendo questo è definito "Man In The Middle" o MITM.
Leggi altre domande sui tag web-application