重复/不间断地点击页面,空白引荐,非恶意

上周我问了这个问题,并遵循了debuggingbuild议,现在有了更多的信息。

我有一个奇怪的问题 – 在一个高stream量的网站上(每月有数百万的访问者),每天我们得到大约20个左右的情况,一个主机开始不断请求同一页面,每秒多次 – 从几分钟到一整天的任何时间长度。

这次攻击显然不是恶意的,因为我已经回溯了IP地址,并将其与我采访过的一些注册用户进行了匹配。 他们说,当这种情况发生时,他们的电脑变慢了,但是否则可以使用。 这不会发生在每一页的负载,而是零星的。

日志命中有以下特点:

  • 他们开始“正常” – 首页加载实际上访问所有页面的资源(图像等),以及.php
  • 然后主机开始请求只是PHP页面,没有资源不断,通常每秒(但有时更快,有时慢几秒)
  • 远程浏览器总是Firefox 3.x(我们已经看到高达3.5.3和低至3.0.2)
  • 即使第一个页面请求有一个,后续的点击也没有引用
  • 只要访问者在该特定页面上,这种情况就会持续下去,而下一页加载通常是正常的
  • 用户经常忘记发生了什么 – 他们的页面没有重新加载,所以发生在他们的背景下,我相信Firefox只是把信息扔掉
  • 这发生在静态(例如,联系人)和dynamic页面(例如邮箱)
  • 受影响的主机的IP分配没有我能辨别的相似性(例如,它们并不都是企业防火墙的后盾)
  • 我们认为页面上的一个错误的JavaScript可能导致它,但完全禁用JavaScript并没有影响到所有的问题

我们终于明白如何处理这件事。 一个简单的DoSfilter是不合适的 – 我们拥有这个filter,触发它的阈值远高于单个页面请求(没有相关的图像,CSS等)。 我们还安装了mod_evasive,但是这并不能捕捉到这些,因为我们有一个多服务器系统,并且是以每个孩子为基础运行的。

该堆栈是LAMP,Redhat安装,PHP 5.2,Apache 2.2.3,NGINX框在多个Web服务器和数据库后端作为软件负载均衡器运行。

在没有好的想法的情况下,我们采用在memcached中编写我们自己的虚拟filter,在memcached IFF中存储IP + URI的密钥,用户是Firefox 3.x,并且引用者是空白的,并且递增每个页面请求。 一旦在一段时间内超过一定的门槛,我们还有403个要求。

但是,我不认为这是networking堆栈中处理这个问题的适当的地方。 希望有人看到这些,可以帮助我们find模式。

感谢您的贡献!

  • 用户经常忘记发生了什么 – 他们的页面没有重新加载,所以发生在他们的背景下,我相信Firefox只是把信息扔掉

听起来几乎就像一个后台进程…一个已经走入歧途的扩展?

  • 只要访问者在该特定页面上,这种情况就会持续下去,而下一页加载通常是正常的

加强扩展中的错误的情况。 在“正常”的处理过程中,某些东西可怕地发生了故障,但是当你重新加载的时候,它会重新启动任何挂起的处理,并且成功,而不是挂在循环中。

或者像jholloway7提到的那样,保持活力的东西意味着其他会议。 (评论+1指出一个例子)