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

and*_*ber 2 ip privacy ip-blocking

我经营一个带有匿名评论功能的网站。用户可以互相举报滥用行为;标志与 IP 地址相关联(通过 PHP 从 中获取$_SERVER['REMOTE_ADDR'])。

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

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

对于一个没有恶意但只是想要隐私的精通计算机的人,我不太担心。他们可以自己决定是重视隐私还是能够发表更多评论。

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

The*_*Wiz 17

基于 IP 的网络的规则 #1。在它上面进行通信的每个人都有一个 IP。您可以通过第 3 方伪装它,但您仍然拥有公共 IP。没有例外。Internet 是一个基于 IP 的网络。我怀疑你的代码中有一些不好的逻辑。


小智 9

也有可能这些变量没有返回预期的结果,因此是空白的。你可以尝试这样的事情:

 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";
}
Run Code Online (Sandbox Code Playgroud)

从 PHP 手册页中收集到:http : //www.php.net/manual/en/language.variables.predefined.php#31724