如果我阻止具有空白 IP 地址的用户,这会影响无辜的非技术用户吗?

如果我阻止具有空白 IP 地址的用户,这会影响无辜的非技术用户吗?

我经营一个具有匿名评论功能的网站。用户可以举报他人的滥用行为;举报与 IP 地址绑定(通过 PHP 从 抓取$_SERVER['REMOTE_ADDR'])。

我注意到 99% 的标志都是针对空白 IP 的。

我正在考虑发布一条消息“需要 IP 地址才能发表评论”并禁止使用空白 IP。

对于一个精通电脑、没有恶意、只是想要隐私的人来说,我并不太担心。他们可以自己决定是重视隐私还是重视评论能力。

我担心的是阻止非技术以及没有意识到自己没有 IP 地址的非恶意用户,因此在无法发表评论时感到困惑。 是否有可能发生这种情况的情况?

答案1

基于 IP 的网络规则 1。每个在其上通信的人都有一个 IP。您可以通过第三方伪装它,但您仍然拥有一个公共 IP。没有例外。互联网是一个基于 IP 的网络。我怀疑您的代码中某些地方存在一些错误的逻辑。

答案2

也有可能这些变量没有返回预期结果,因此是空白的。您可以尝试以下方法:

 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

相关内容