【问题标题】:How to make sure about the ip of the visitor?如何确定访问者的ip?
【发布时间】:2010-10-26 17:19:36
【问题描述】:

我有一个博客聚合网站

故事按访问次数排序

我认为我正面临垃圾访问

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

我的网站不允许来自同一个IP的访问;但是,我的访问者不知何故改变了他们的 ips。

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

谢谢

【问题讨论】:

    标签: php security ip spam-prevention spam


    【解决方案1】:

    简短的回答是,如果只需要一次未经验证的访问就可以改变故事的顺序,那么就不可能阻止坚定的攻击者。 您可能需要考虑实施注册用户投票系统。

    但是,您可以收集几条信息并将它们全部组合起来:

    1) 用户代理
    2) IP 地址
    3) X-Forwarded-For 标头(如果可用)

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

    您始终可以从 antiproxy.com 等网站下载代理数据库,但事实是,当今大多数精心策划的攻击都来自尚未记录的僵尸网络节点。您的网站完全有可能成为与普通访问者无法区分的异构流量攻击的目标。

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

    【讨论】:

    • @novatrust 感谢您的解释,我已更改代码以将所有具有相同“用户代理”的用户视为垃圾邮件,并将所有具有相同 IP 的用户视为垃圾邮件,我将尝试使用 x-forwarded-for也是。将系统更改为投票系统会使我的情况变得非常复杂。但那件事我不确定?我们有独特的用户代理吗?谢谢
    • 用户代理不是唯一的,但通常它们可以足够唯一。示例:一分钟内的 300 次点击都宣传相同版本的 firefox、浏览器工具栏和已安装的 .NET 框架,格式完全相同。这不太可能,并且可能表明存在恶意活动。
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      您无法可靠地检测 IP。

      它可能来自代理或被欺骗。

      【讨论】:

      • 或者 - 让我们面对现实吧 - 它可能是真实的!想象一下在一个网关后面的一群书呆子。其中一个将一个不错的 URL 扔进 IRC...
      【解决方案4】:

      我有时会使用这个功能。但正如其他人所说,要在 100% 的时间内获得正确的 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;
      }
      

      【讨论】:

      • 我认为这不会让您获得真正的 IP - 只是根据测试顺序设置的第一个 IP。它甚至没有将 $_SERVER['HTTP_X_FORWARDED_FOR'] 与 $_SERVER['HTTP_CLIENT_IP'] 进行比较,这是一些答案中的建议。
      猜你喜欢
      • 2013-04-03
      • 2010-10-10
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 2011-12-17
      • 1970-01-01
      • 2015-02-09
      • 2020-12-12
      相关资源
      最近更新 更多