È possibile rilevare se una richiesta in arrivo viene effettuata tramite un server proxy? Se un'applicazione web "mette al bando" gli utenti tramite l'indirizzo IP, potrebbero aggirarli utilizzando un server proxy. Questa è solo una delle ragioni per bloccare queste richieste. Come può essere realizzato?Come sapere se una richiesta proviene da un proxy?
risposta
IMHO non c'è modo affidabile al 100% per raggiungere questo obiettivo, ma la presenza di una qualsiasi delle seguenti intestazioni è una forte indicazione che la richiesta è stata indirizzata da un server proxy:
via:
forwarded:
x-forwarded-for:
client-ip:
Si potrebbe anche cercare il proxy o pxy nel nome di dominio del client.
È possibile cercare questi intestazioni della richiesta Oggetto e di conseguenza decidere se richiesta avviene tramite un proxy/non
1) Via 2) X-Forwarded-For
nota che questo non è un Il trucco del colpo sicuro al 100% dipende dal fatto che questi server proxy scelgano di aggiungere le intestazioni sopra.
Se un server proxy è configurato correttamente per evitare il rilevamento di server proxy, non sarà possibile dirlo.
La maggior parte dei server proxy fornisce intestazioni come altri menzionano, ma quelle non sono presenti sui proxy che intendono nascondere completamente l'utente.
Sarà necessario utilizzare diversi metodi di rilevamento, come i cookie, il rilevamento dell'intestazione del proxy e forse l'euristica IP per rilevare tali situazioni. Controlla http://www.osix.net/modules/article/?id=765 per alcune informazioni su questa situazione. Considerare anche l'uso di una lista nera di proxy - sono pubblicati da molte organizzazioni.
Tuttavia, nulla è sicuro al 100%. È possibile utilizzare le tattiche di cui sopra per evitare la maggior parte delle situazioni semplici, ma alla fine della giornata è semplicemente una serie di pacchetti che formano una transazione TCP/IP e il protocollo TCP/IP non è stato sviluppato con le idee odierne su sicurezza, autenticazione, ecc. .
Tenete a mente che molte aziende di implementare i proxy a livello aziendale per vari motivi, e se semplicemente bloccare i proxy come regola generale si limita necessariamente il pubblico, e che non può essere sempre desiderabile. Tuttavia, questi proxy di solito si annunciano con le intestazioni appropriate - si può finire per bloccare utenti legittimi, piuttosto che utenti che sono bravi a nascondersi.
-Adam
ha fatto un po 'di scavo su questo dopo il mio dominio ottenuto ospitato su Google di AppSpot.com con bei annunci porno hard iniettato in esso (grazie Google).
Prendere una foglia da questo htaccess idea Sto facendo quanto segue, che sembra funzionare. Ho aggiunto una regola specifica per AppSpot che inietta una variabile server HTTP_X_APPENGINE_COUNTRY.
Dim varys As New List(Of String)
varys.Add("VIA")
varys.Add("FORWARDED")
varys.Add("USERAGENT_VIA")
varys.Add("X_FORWARDED_FOR")
varys.Add("PROXY_CONNECTION")
varys.Add("XPROXY_CONNECTION")
varys.Add("HTTP_PC_REMOTE_ADDR")
varys.Add("HTTP_CLIENT_IP")
varys.Add("HTTP_X_APPENGINE_COUNTRY")
For Each vary As String In varys
If Not String.IsNullOrEmpty(HttpContext.Current.Request.Headers(vary)) Then HttpContext.Current.Response.Redirect("http://www.your-real-domain.com")
Next