Назад | Перейти на главную страницу

Если я заблокирую пользователей с пустым IP-адресом, повлияет ли это на невиновных, нетехнических пользователей?

У меня есть веб-сайт с функцией анонимного комментирования. Пользователи могут сообщать друг другу о злоупотреблениях; флаги привязаны к IP-адресу (взяты через PHP из $_SERVER['REMOTE_ADDR']).

Я заметил, что 99% флагов предназначены для пустого IP.

Я думаю о том, чтобы разместить сообщение о том, что «IP-адрес необходим для комментариев» и запретить пустые IP-адреса.

Меня не слишком беспокоит разбирающийся в компьютерах человек, который не является вредоносным, но просто хочет конфиденциальности. Они могут сами решить, ценят ли они конфиденциальность или возможность больше комментировать.

Меня беспокоит блокировка нетехнический и не злонамеренный пользователь, который не понимает, что у него нет IP-адреса, и поэтому сбивается с толку, когда не может комментировать. Есть ли сценарий, при котором это может произойти?

Правило №1 IP-сетей. У всех, кто общается по нему, есть IP. Вы можете замаскировать его через стороннего поставщика, но у вас все еще есть публичный IP-адрес. Никаких исключений. Интернет - это сеть на основе IP. Я подозреваю, что в вашем коде где-то есть плохая логика.

Также возможно, что эти переменные просто не возвращают ожидаемых результатов и поэтому пусты. Вы можете попробовать что-то вроде этого:

 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";
}

Как видно из справочной страницы PHP по адресу: http://www.php.net/manual/en/language.variables.predefined.php#31724