Quando un browser Web utilizza un proxy HTTP, le cose vanno come segue. Supponiamo che l'URL di destinazione sia http://www.example.com/index.html
. Il browser si collega quindi al proxy e gli dice: "Voglio ottenere la pagina in http://www.example.com/index.html
". Il proxy è conforme, ottiene i dati e li rimanda al browser. Per costruzione, il proxy vede tutti i dati. La connessione tra proxy e browser potrebbe essere crittografata, ma il proxy vede ancora tutto.
Se l'URL di destinazione utilizza SSL ( https://www.example.com/index.html
: attenzione s
in https
), il browser si connette al proxy e dice: "Voglio connettermi alla porta 443 di www.example.com
; fallo e poi trasmetti tutti i byte in entrambe le direzioni ". La sezione 5.2 di RFC 2817 descrive questo meccanismo. Il proxy funge quindi da relay per tutti i byte tra il browser e il server Web, questi byte codificano indipendentemente dal browser e dal server Web, vale a dire in pratica un handshake SSL e dati successivi. In tal caso, il proxy è esterno del tunnel SSL e non può vedere i dati di scambio. Il tunnel SSL è ancora tra il server Web e il browser e il proxy è un meccanismo puramente di trasporto.
Il proxy è ancora in una posizione ideale per tentare di attacchi Man-in-the-Middle poiché tutte le comunicazioni lo attraversano; ma SSL è protetto da ciò, in particolare in virtù del certificato del server Web che viene convalidato dal client. Questo naturalmente si basa sull'utente umano non per fare clic sugli avvisi relativi ai certificati non validi. In alcune organizzazioni, gli amministratori di sistema locali installano certificati CA root "canaglia" extra nei sistemi desktop in modo che possano creare un falso certificato del server sul proxy e eseguire l'attacco MitM, garantendo loro l'accesso ai dati scambiati (in modo che possano applicare i filtri antivirus) anche sul traffico HTTPS, o almeno così dicono).
Escludendo tale installazione CA anomala (che è, in pratica, una violazione della sicurezza del computer client), il proxy non sarà in grado di dare un'occhiata ai dati scambiati tra il browser e il server HTTPS. Il proxy sarà comunque in grado di sapere quale server è stato contattato e di osservare la dimensione degli scambi di dati: la crittografia nasconde il contenuto, non le dimensioni.
La situazione per SOCKS è concettualmente simile. La finestra di dialogo tra browser e proxy è diversa, ma i concetti di base rimangono gli stessi: il proxy sarà in grado di vedere tutto il traffico HTTP e nessuno del traffico HTTPS.
Modifica: apparentemente, esistono altri tipi di "proxy", in cui il tuo browser contatta un server dedicato, che a sua volta gestisce un browser, ti cerca e ti restituisce le pagine . Sfortunatamente, alcune persone chiamano "proxy Web", una terminologia che è stata utilizzata per due decenni per designare ciò che è, tecnicamente, un proxy HTTP. Ne deriva confusione.
Tali "proxy di navigazione" sono simili, in linea di principio, all'apertura di una sessione sul server con un protocollo desktop remoto e eseguendo il browser da lì. Questo garantisce tutto il potere immaginabile agli amministratori proxy nelle tue attività di navigazione. Non vuoi farlo se non ti fidi assolutamente dei proxy sysadmins.
E preferiresti non utilizzare l'espressione "proxy Web" se esiste un rischio di ambiguità.