In che modo il browser assicura che stia comunicando con il server giusto?
In che modo il browser assicura che stia comunicando con il server giusto?
TL; DR: l'autenticazione del server avviene solo con HTTPS, ma né HTTP né altri protocolli supportati dal browser. Senza una corretta autenticazione, attacchi dannosi come lo sniffing o la manipolazione del traffico sono facili.
In generale, il browser utilizza le funzioni del sistema operativo e dell'infrastruttura sottostante per cercare l'indirizzo IP per il dominio indicato nell'URL (ricerca DNS). Quindi si collega a questo indirizzo IP e scambia i dati.
Questo processo può andare storto in diversi punti. Ad esempio un utente malintenzionato potrebbe manomettere la ricerca DNS in modo che l'IP restituito dalla ricerca non sia l'indirizzo IP del server previsto ma di un sistema controllato da un utente malintenzionato. Un utente malintenzionato potrebbe anche manomettere il routing del traffico in modo che qualsiasi traffico destinato alle estremità IP del target aggiunga un sistema che l'utente malintenzionato controlla o passa attraverso tale sistema.
Facendo questo, un utente malintenzionato potrebbe ottenere lo sniffing passivo del traffico, ad esempio per rubare credenziali come password, manipolazione del traffico attiva come uomo nel mezzo, per esempio per iniettare pubblicità o malware o l'hacker potrebbe incorporare completamente il sistema di destinazione da servire contenuto diverso.
Il normale traffico HTTP (e anche il traffico FTP) non fornisce molta protezione a questo. Potrebbe esserci DNSSec utilizzato nella rete per prevenire lo spoofing del DNS, ma DNSSec non è utilizzato per tutti i domini e viene applicato raramente, cioè la maggior parte delle configurazioni accetta risposte DNS non firmate (e quindi forse manipolate). E anche se DNSSec viene utilizzato per garantire il corretto target di attacchi di indirizzi IP contro il routing potrebbe ancora essere fatto.
Solo quando si utilizza HTTPS (vale a dire https://..
URL) viene eseguita un'autenticazione corretta del server seguita da una crittografia del traffico tra browser e server. Se fatto correttamente, previene tutti gli scenari descritti, cioè annusando, l'uomo attivo nel mezzo e incorporando l'identità del bersaglio, non importa quanto esattamente l'attacco sia fatto.
Un punto essenziale qui è la corretta autenticazione del server durante l'iniziale handshake TLS (prima dello scambio dei dati dell'applicazione) che si basa sul controllo dei certificati. Non c'è bisogno di spiegare ancora come ciò viene fatto poiché ci sono già eccellenti risposte a riguardo su questo sito, come Quadro dei certificati SSL 101: In che modo il browser verifica effettivamente la validità di un determinato certificato del server? .
Leggi altre domande sui tag server web-browser