【问题标题】:Why is Chrome flooding my site with GET requests?为什么 Chrome 会用 GET 请求淹没我的网站?
【发布时间】:2020-03-20 20:32:04
【问题描述】:

我的 IIS 托管网站出现周期性问题,我的一个客户端浏览器(Google Chrome 77/78 或更高版本)突然开始每秒向我的网站提交数十个相同页面的请求。

用户始终是我的应用程序的有效、经过身份验证的用户。这些请求似乎也没有遵循我可以从我们的日志中确定的任何标准模式。例如,这不是授权重定向问题,它几乎就像浏览器正在发送数十个请求,这些请求是由用户以某种方式发起的。例如,打开我们页面的书签版本数十次。

查看请求详细信息,我可以看到以下获取标头:

   HTTP_SEC_FETCH_USER: ?1
   HTTP_SEC_FETCH_SITE: none
   HTTP_SEC_FETCH_MODE: navigate

据我所知,这意味着该操作是用户启动的,并且它不是来自我自己的应用程序,就 ajax 请求或页面刷新而言。例如,当我在 Chrome 的新选项卡中打开我的页面时,我只能获得上述 fetch headers 组合。

这真的与 Chrome 浏览器本身有关吗?我无法在开发中复制该问题,但它现在已经发生了几次,我不确定从哪里开始确定原因。

【问题讨论】:

  • Chrome 声称正在预加载页面(即使用户没有真正点击链接),因此如果预测错误,这种魔法可能会适得其反,而且您可能无法在 IIS 端修复它。
  • 嗨 Lex,是的,这是我首先怀疑的事情之一,但我不知道是不是这样。幸运的是,我现在有节流代码,似乎可以防止大规模洪水 - 但真的很想知道为什么会发生这种情况。
  • 你有服务攻击吗?
  • 为什么你认为它是 Chrome?代理是可以伪造的。我会查看客户端计算机,看看该客户端计算机上是否存在恶意软件或其他东西。也许安装了一个扩展?
  • 嗨,JAZ 和 jdweng。因为请求是经过身份验证的,所以不太可能是 dos 攻击,但是是的,它可能是受影响客户端上的一个损坏的扩展程序或恶意软件。如果可能的话,我必须检查一下。

标签: c# asp.net-mvc google-chrome iis


【解决方案1】:

正如其他用户在 cmets 中指出的那样,这实际上可能是由 Mobile Chrome 预测加载机制引起的。

Android 版 Chrome 的最新版本 (78.0.3924.108) 已对预测加载进行了试验,在选择链接进行预取时更改了规则。这可能会导致在访问您的网站时没有任何用户输入的情况下“加载”任意链接(发出 GET 请求、扭曲统计数据并导致该操作产生的任何副作用)。

这已在过去一周推出,并在许多不同的情况下引起了许多问题(注销用户、点击付费或聚合链接等)

有关 Chromium 问题跟踪器的更多信息: https://bugs.chromium.org/p/chromium/issues/detail?id=1027991

通过预取发出的请求发出 Purpose: prefetch 标头 - 至少对于 Chrome,其他浏览器可能会发出其他标头

此后,今天上午(2019 年 11 月 25 日)已解决此问题。

【讨论】:

  • 不幸的是,我目睹了 Chrome 77 和 78 的行为。在 2 个月的时间里,它发生了大约 3 次,当请求被限制时我们得到的错误不包括目的:预取标题。所以可能与此无关。
  • 好吧,太糟糕了。我所描述的内容打动了我们,所以我暂时将其留在这里,以防对其他人有所帮助。
猜你喜欢
  • 2020-12-31
  • 2019-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
相关资源
最近更新 更多