DevSecOps

10 jul, 2008

Recuperando IP de um HOST remoto

Publicidade

Por questões de segurança, ou simplesmente de controle de acesso, construímos sistemas WEB onde uma das informações armazenadas é o IP (Internet Protocol) do HOST remoto (usuário).

Neste artigo veremos como recuperar o IP de um usuário que acessa um sistema WEB.

IP

IP ou Internet Protocol é uma tecnologia que permite a comunicação padronizada entre computadores, mesmo que estes sejam de plataformas diferentes. Em resumo, IP é uma identificação única de um computador conectado a Internet.

ServerVariables

Para recuperar informações dos usuários que acessam um sistema WEB, utilizaremos a coleção ServerVariables do objeto Request.

A coleção ServerVariables contém todas as informações geradas a partir de uma determinada requisição WEB combinada com variáveis do servidor.

Em particular, utilizaremos duas variáveis: HTTP_X_FORWARDED_FOR e REMOTE_ADDR. A primeira recupera o IP do HOST caso o mesmo esteja conectado à Internet utilizando um Proxy. A segunda recupera o IP do HOST remoto caso o mesmo não esteja conectado à Internet utilizando um Proxy.

Recuperando IP

Abaixo temos o exemplo de um método em C# que recupera o IP do HOST remoto:

public string IPUsuario()
{
    // Conexão utilizando proxy
    string strIPUsuario = System.Web.HttpContext.Current.Request.
        ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (strIPUsuario == null)
    {
        // Conexão sem utilizar proxy
        strIPUsuario = System.Web.HttpContext.Current.Request.
            ServerVariables["REMOTE_ADDR"];
    }

    return strIPUsuario;
}

Obs: Caso você execute este método a nível local (localhost) o mesmo retornará o IP padrão do diretório virtual (127.0.0.1).

Abaixo temos a representação gráfica da interface do nosso exemplo quando executado a nível local:

Abaixo temos a representação gráfica da interface do nosso exemplo quando executado a nível de servidor:

Finalizando

Neste artigo abordamos como recuperar o IP de um HOST remoto para controle de acesso eu segurança.

Espero ter contribuído!

Até o próximo!