Pergunta

É possível detectar se uma solicitação de entrada está sendo feita através de um servidor proxy? Se uma aplicação web "proibições" usuários através do endereço IP, que pode ignorar isso usando um servidor proxy. Isso é apenas uma razão para bloquear esses pedidos. Como isso pode ser alcançado?

Foi útil?

Solução

IMHO não há nenhuma maneira 100% confiável para conseguir isso, mas a presença de qualquer um dos seguintes cabeçalhos é uma forte indicação de que o pedido foi encaminhado de um servidor proxy:

via:
forwarded:
x-forwarded-for:
client-ip: 

Você também pode olhar para o procuração ou pxy no nome de domínio do cliente.

Outras dicas

Se um servidor proxy é configurado corretamente para evitar a detecção de servidores proxy, você não será capaz de dizer.

A maioria dos servidores proxy fornecer cabeçalhos como outros mencionar, mas aqueles que não estão presentes no proxies significou para esconder completamente o usuário.

Você precisará empregar vários métodos de detecção, tais como biscoitos, detecção de cabeçalho de proxy e, talvez, IP heurística para detectar tais situações. Confira http://www.osix.net/modules/article/?id=765 para algumas informações sobre esta situação. Também considere o uso de uma lista negra de proxy -. eles são publicados por muitas organizações

No entanto, nada é 100% certo. Você pode empregar as táticas acima para evitar situações mais simples, mas no final do dia é apenas uma série de pacotes que formam uma transação TCP / IP e o protocolo TCP / IP não foi desenvolvido com as idéias atuais sobre segurança, autenticação, etc .

Tenha em mente que muitas corporações implantar em toda a empresa proxies, por várias razões, e se você simplesmente bloquear proxies como regra geral, você necessariamente limitar o seu público, e que pode não ser sempre desejável. No entanto, estes proxies geralmente anunciam-se com os cabeçalhos apropriados -. Você pode acabar impedindo usuários legítimos, ao invés de usuários que são bons em esconder-se

-Adam

Fez um pouco de escavação sobre este após meu domínio ficou hospedada no Google da AppSpot.com com bons anúncios de hardcore pornô injetado (graças Google).

Tomar uma folha a partir desta ideia htaccess eu estou fazendo o seguinte, que parece estar funcionando. Eu adicionei uma regra específica para AppSpot que injeta um 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

Você pode olhar para estes cabeçalhos no Object Request e, consequentemente, decidir se o pedido é através de um proxy / não

1) Via 2) X-Forwarded-For

Note que isso não é um truque tiro certo 100%, depende se estes servidores proxy optar por adicionar acima cabeçalhos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top