【问题标题】:Securing IP check php保护IP检查php
【发布时间】:2013-12-10 07:21:11
【问题描述】:

我有

$result = mysqli_query($mysqli,"SELECT * FROM ".MYSQLBTCTABLE." WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND date = '".date("Y-m-d")."' AND time = '".date("D")."'") or die(mysqli_error());

如何保护$_SERVER['REMOTE_ADDR'],使其不仅检查用户ip/proxy,还检查socks ip,这样他们就不会通过更改IP 来滥用我的代码?

我也发现了这段代码:

                function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   //check ip from share internet
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))   //to check ip is pass from proxy
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

如果我输入WHERE ip = '".($ip)."',它会起作用吗?

【问题讨论】:

  • 您的代码错误。使用反引号(或不使用)来包围表名。
  • 我从这里删除的 .. 反引号你没看到有等吗?问题是关于 remote_addr
  • 可以,但是你的代码会导致语法错误。
  • 我知道我的真实代码是 $result = mysqli_query($mysqli,"SELECT * FROM ".MYSQLBTCTABLE." WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "' AND date = '".date("Ymd")."' AND time = '".date("D")."'") or die(mysqli_error());
  • 然后发布你的真实代码。我在这里看到了很多无法解决的问题,因为 OP 没有发布真正的代码。此外,有更多人看到您的问题,他们可能认为您的代码没问题,只需复制粘贴即可。

标签: php security proxy ip


【解决方案1】:

一般情况下你不能这样做

  • 您无法确定用户是否使用代理:它可以是匿名代理
  • 你不能确定他是否在使用电脑设备
  • 你不能确定他是不是人类:可能是通过cURL 或类似的东西提出的请求

这就是互联网的现实。您不能依赖来自客户端的任何信息。如果您怀疑用户更改了他的 IP 地址 - 然后隐藏关键部分身份验证。因此,您将能够通过他在您的网络应用程序中的登录来识别用户。

【讨论】:

  • 是的,但我可以肯定他们很难找到新的 Socks 代理 :) 我已经提前找到了答案,但我忘了在这里提及
猜你喜欢
  • 2016-11-02
  • 2015-07-16
  • 1970-01-01
  • 2021-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多