如何确定访客的IP?

时间:2009-05-16 12:58:15

标签: php security ip spam-prevention spam

我有一个博客聚合网站

故事按访问次数排序

我认为我正面临访问垃圾邮件

因为一些博客的故事在同一秒内通过传出IP地址获得了大量访问

我的网站不允许来自同一个IP的访问;然而,我的访客以某种方式改变他们的ips。

是他们检测此垃圾邮件访问的任何解决方案吗?我想知道Google adSense如何解决这样的问题?

由于

4 个答案:

答案 0 :(得分:5)

简短的回答是,如果单一未经验证的访问是改变故事顺序所需的唯一内容,则无法阻止坚定的攻击者。 您可能想要考虑实施注册用户投票系统。

但是,您可以收集多条信息并合并所有信息:

1)用户代理

2)IP地址
3)X-Forwarded-For标题(如果可用)

攻击者通常会很懒惰而不会通过不同的用户代理循环。如果您将系统设置为以特定间隔(而非实时)处理访问信息,则可能会使用相同的用户代理过滤掉同时发生的大量访问。

您可以随时从antiproxy.com等网站下载代理数据库,但事实是,今天大多数计划好的攻击来自僵尸网络节点,这些节点尚未被记录。您的网站完全有可能成为针对异构流量的攻击的目标,这种攻击与普通访问者无法区分。

至少,我建议更改您的实施,以便用户可以对故事进行投票并需要验证码。

答案 1 :(得分:1)

使用PHP,您可以针对IP地址检查$ _SERVER [“HTTP_X_FORWARDED_FOR”]变量,以进一步确保客户端是他所说的人。这将有助于通过某些代理来识别人员。

答案 2 :(得分:1)

我有时会使用这个功能。但正如其他人所说,在百分之百的时间内获得正确的IP可能很困难。

我不记得我从哪里获得了这个功能,但它在互联网上似乎相当普遍。

function getRealIpAddr()
{
    if (!empty($_SERVER['HTTP_CLIENT_IP']))   
    {
      $ip=$_SERVER['HTTP_CLIENT_IP'];
    }
    elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
    {
      $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else
    {
      $ip=$_SERVER['REMOTE_ADDR'];
    }
    return $ip;
}

答案 3 :(得分:0)

您无法可靠地检测到IP。

它可能是通过代理进行的,也可能是欺骗性的。