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

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

我上周问过这个问题,并按照调试建议操作,现在有了更多信息。

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

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

日志命中有以下特点:

  • 它们以“正常”方式启动——第一次页面加载实际上会访问页面的所有资源(图像等)以及 .php
  • 然后主机开始不断请求 php 页面,没有资源,通常每秒一个(但有时更快,有时会慢几秒钟)
  • 远程浏览器始终是 Firefox 3.x(我们见过最高版本为 3.5.3,最低版本为 3.0.2)
  • 后续点击没有 referrer,尽管第一个页面请求有一个 referrer
  • 只要访问者停留在特定页面上,这种情况就会持续下去,并且下一页的加载通常很正常
  • 用户通常不知道发生了什么——他们的页面不会重新加载,所以无论发生什么,都是在后台进行的,我相信 Firefox 只是把这些信息丢掉了
  • 这发生在静态页面(例如联系人)和动态页面(例如邮箱)上
  • 受影响主机的 IP 分布在我看来没有相似之处(例如,它们并不都在公司防火墙后面)
  • 我们认为页面上的 JavaScript 有问题可能会导致此问题,但完全禁用 JavaScript 根本无法解决问题

我们对此束手无策。简单的 DoS 过滤器并不合适——我们有这个,并且触发它的阈值远高于每秒单个页面请求(没有相关图像、css 等)。我们还安装了 mod_evasive,但它无法捕获这些,因为我们有一个多服务器系统,并且它以每个子项为基础运行。

该堆栈是 LAMP、Redhat 安装、PHP 5.2、Apache 2.2.3,其中一个 NGINX 盒作为多个 Web 服务器和数据库后端前面的软件负载平衡器运行。

由于没有好主意,我们只好在 memcached 中编写自己的虚拟过滤器,如果用户是 Firefox 3.x 且 referrer 为空,则将 IP+URI 的密钥存储在 memcached 中,并在每个页面请求中递增。一旦它在一定时间内超过某个阈值,我们将 403 进一步请求。

不过,我不认为这是网络堆栈中处理此问题的合适位置。希望其他人也看到过这些,并能帮助我们找到模式。

感谢您做出的任何贡献!

答案1

  • 用户通常不知道发生了什么——他们的页面不会重新加载,所以无论发生什么,都是在后台进行的,我相信 Firefox 只是把这些信息丢掉了

听起来就像是一个后台进程...一个误入歧途的扩展?

  • 只要访问者停留在特定页面上,这种情况就会持续下去,并且下一页的加载通常很正常

加强了扩展中存在错误的案例。在“正常”处理过程中,某些东西出现了严重故障,但当你重新加载时,它重启无论什么处理被挂起了,它都会成功,而不是陷入循环。

那,或者作为jholloway7提到,某些事情为其他会话保持活动。(评论+1 指出一个例子)

相关内容