asp.net - usando - ¿Cómo saber si una Solicitud proviene de un Proxy?
detectar proxy (4)
En mi humilde opinión no hay una manera 100% confiable de lograr esto, pero la presencia de cualquiera de los siguientes encabezados es una fuerte indicación de que la solicitud fue enrutada desde un servidor proxy:
via:
forwarded:
x-forwarded-for:
client-ip:
También puede buscar el proxy o pxy en el nombre de dominio del cliente.
¿Es posible detectar si una solicitud entrante se realiza a través de un servidor proxy? Si una aplicación web "prohíbe" a los usuarios a través de una dirección IP, podrían omitir esto mediante el uso de un servidor proxy. Esa es solo una razón para bloquear estas solicitudes. ¿Cómo se puede lograr esto?
Puede buscar estos encabezados en el objeto de solicitud y, en consecuencia, decidir si la solicitud se realiza a través de un proxy / no
1) A través de 2) X-Forwarded-For
tenga en cuenta que este no es un truco de disparo 100% seguro, depende de si estos servidores proxy eligen agregar encabezados anteriores.
Si un servidor proxy está configurado correctamente para evitar la detección de servidores proxy, no podrá saberlo.
La mayoría de los servidores proxy proporcionan encabezados como otros mencionan, pero no están presentes en los servidores proxy que ocultan por completo al usuario.
Tendrá que emplear varios métodos de detección, como cookies, detección de encabezado de proxy y quizás heurística de IP para detectar tales situaciones. Visite http://www.osix.net/modules/article/?id=765 para obtener información sobre esta situación. Considere también el uso de una lista negra de proxy: las publican muchas organizaciones.
Sin embargo, nada es 100% seguro. Puede emplear las tácticas anteriores para evitar la mayoría de las situaciones simples, pero al final del día es simplemente una serie de paquetes que forman una transacción TCP / IP, y el protocolo TCP / IP no se desarrolló con las ideas actuales sobre seguridad, autenticación, etc. .
Tenga en cuenta que muchas empresas implementan proxys de toda la empresa por varias razones, y si simplemente bloquea los proxies como regla general, necesariamente limita su audiencia, y eso puede no ser siempre deseable. Sin embargo, estos proxies usualmente se anuncian con los encabezados apropiados: puede terminar bloqueando usuarios legítimos, en lugar de usuarios que son buenos para ocultarse.
-Adán
Investigué un poco después de que mi dominio se alojó en la AppSpot.com de Google con buenos anuncios de porno hardcore inyectados (gracias a Google).
Tomando una hoja de esta idea htaccess estoy haciendo lo siguiente, que parece estar funcionando. Agregué una regla específica para AppSpot que inyecta un HTTP_X_APPENGINE_COUNTRY ServerVariable.
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