A diferença entre HTTP_X_FORWARDED_FOR e REMOTE_ADDR Não há variável HTTP_X_FORWARDED_FOR em Request.ServerVariables, apenas REMOTE_ADDR, mas ambas as variáveis podem obter o endereço IP do cliente. Então, qual é a diferença entre eles?
Use Request.ServerVariables(REMOTE_ADDR) em ASP para obter o endereço IP do cliente Porém, se o cliente usar um servidor proxy para acessar, o que será obtido é o endereço IP do servidor proxy, não o endereço IP real do cliente. Para obter o endereço IP real do cliente através do servidor proxy, use Request.ServerVariables(HTTP_X_FORWARDED_FOR) para lê-lo.
Porém, deve-se observar que nem todo servidor proxy pode usar Request.ServerVariables(HTTP_X_FORWARDED_FOR) para ler o IP real do cliente. Alguns dos IPs lidos por este método ainda são o IP do servidor proxy.
Outra coisa a se observar é que caso o cliente não acesse através de um servidor proxy, o valor obtido com Request.ServerVariables (HTTP_X_FORWARDED_FOR) ficará vazio. Então, se você quiser usar esse método em seu programa, você pode fazer assim:
...
userip = Solicitação.ServerVariables(HTTP_X_FORWARDED_FOR)
Se userip = Então userip = Request.ServerVariables(REMOTE_ADDR)
...
Ou seja: se o cliente passar pelo servidor proxy, será levado o valor de HTTP_X_FORWARDED_FOR. Se o cliente não passar pelo servidor proxy, será levado o valor de REMOTE_ADDR.
Claro, a abordagem acima não é onipotente. Como mencionado no terceiro parágrafo, você já considerou que se o usuário estiver usando um proxy de nível 2, um proxy de nível 3, um proxy de nível 4....