Se capisco correttamente la domanda, mi chiedi se è possibile rilevare (sul lato server di una connessione HTTPS) se la connessione proviene da un server proxy o da un client reale (un browser)?
(Inizialmente non ero riuscito a vedere come il certificato avrebbe fornito informazioni preziose, ma ora mi rendo conto di cosa mi mancava prima. Quello che è stato suggerito è di fornire all'utente un javascript, attivarlo tramite il codice HTML e l'utente rimanda i dati estratti dal certificato SSL come sarebbe il certificato fornito dal proxy Sì, dovrebbe funzionare e sembra alquanto improbabile che il proxy-server possa filtrare tali "azioni" dal javascript. ! )
Analizzare quanto segue può aiutare a scoprire l'originatore di una connessione:
- Ordinamento intestazione HTTP
- Intestazioni HTTP specifiche per browser
- Valori del cookie HTTP
- Comportamento HTTP
Ordinamento di intestazione HTTP -
Il rilevamento dell'originatore della connessione dovrebbe essere teoricamente possibile analizzando l'ordine delle intestazioni HTTP. I browser tendono a strutturare i loro header HTTP in specifici "pattern", utilizzando questa conoscenza può essere possibile:
- Crea un'impronta digitale univoca per il proxy determinando in che modo il proxy organizza le intestazioni HTTP.
- Con "in anticipo" sapere in che modo i browser comuni ordinano le intestazioni HTTP e confrontarle con l'ordine della richiesta corrente. (Chiaramente non è la migliore idea ...)
Intestazioni HTTP specifiche per browser -
Potrebbe essere possibile che il server proxy includa intestazioni HTTP specifiche che un browser non avrebbe. Questi potrebbero essere per il bilanciamento del carico o il reindirizzamento del tipo di richiesta e così via.
Valori del cookie HTTP -
È anche plausibile che il proxy inserisca un valore di cookie specifico per avviare una connessione a un server specifico se viene utilizzato il bilanciamento del carico o il clustering.
Comportamento HTTP -
Sebbene non sia esattamente facile da implementare, potrebbe essere possibile rilevare la presenza di un proxy avviando un numero di codici di ritorno specifici per HTTP e analizzando in che modo il "client" risponde alle richieste. Forse questo potrebbe consentire il rilevamento di un comportamento insolito che sarebbe considerato non comune per i normali browser.
Supponendo un server HTTP Apache potrebbe essere possibile utilizzare le regole mod_security per ottenere alcuni dei precedenti.
Qualche altro modo, probabilmente improbabile e inaffidabile, di rilevare l'origine di una connessione è quello di ispezionare campi specifici del protocollo (IP / TCP) come timestamp, opzioni IP. Questi possono cambiare in modo particolare assumendo l'origine di un server proxy.
Potrebbe anche essere possibile determinare l'origine in base ai tempi, nonostante siano soggetti a un po 'di jitter e rumore, in teoria potrebbe essere determinato se un proxy intercetta la connessione. Non sto suggerendo che questo sarebbe affatto affidabile o addirittura possibile, ma un po 'può essere determinato attraverso i tempi.