Se eu bloquear usuários com um endereço IP em branco, isso afetará usuários inocentes e não técnicos?

2

Eu gerencio um site com um recurso de comentários anônimos. Os usuários podem marcar um ao outro por abuso; flags são amarradas a um endereço IP (obtido via PHP de $_SERVER['REMOTE_ADDR'] ).

Eu notei que 99% dos sinalizadores são para um IP em branco.

Estou pensando em colocar uma mensagem dizendo "Um endereço IP é necessário para comentar" e não permitir IPs em branco.

Para uma pessoa com conhecimento de computador que não é mal-intencionada, mas apenas quer privacidade, não estou muito preocupado. Eles podem decidir por si mesmos se valorizam a privacidade ou a capacidade de comentar mais.

O que me preocupa é bloquear um usuário não técnico e não malicioso que não perceba que não tem um endereço IP e fica confuso quando não consegue comentar. Existe algum cenário em que isso possa ocorrer?

    
por andrewtweber 04.01.2012 / 20:44

2 respostas

17

Regra nº 1 de redes baseadas em IP. Todo mundo que se comunica tem um IP. Você pode mascará-lo por meio de um terceiro, mas ainda tem um IP público. Não há exceções. A Internet é uma rede baseada em IP. Eu suspeito que você tenha alguma lógica ruim em seu código em algum lugar.

    
por 04.01.2012 / 20:55
9

Também é possível que essas variáveis simplesmente não retornem os resultados esperados e, portanto, estejam em branco. Você poderia tentar algo assim:

 if ($_SERVER["HTTP_X_FORWARDED_FOR"]) {
   if ($_SERVER["HTTP_CLIENT_IP"]) {
    $proxy = $_SERVER["HTTP_CLIENT_IP"];
  } else {
    $proxy = $_SERVER["REMOTE_ADDR"];
  }
  $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
} else {
  if ($_SERVER["HTTP_CLIENT_IP"]) {
    $ip = $_SERVER["HTTP_CLIENT_IP"];
  } else {
    $ip = $_SERVER["REMOTE_ADDR"];
  }
}

echo "Your IP $ip<BR>\n";
if (isset($proxy)) {
  echo "Your proxy IP is $proxy<BR>\n";
}

Como encontrado na página de manual do PHP em: link

    
por 04.01.2012 / 20:54