什么是 Rate Limiting(速率限制)?|速率限制和机器人

速率限制可阻止过度使用或滥用Web 属性的用户、机器人或应用程序。速率限制可以阻止某些类型的机器人攻击。

Share facebook icon linkedin icon twitter icon email icon

Rate Limiting

学习目标

阅读本文后,您将能够:

  • 了解速率限制的目的
  • 了解速率限制的工作原理
  • 了解速率限制的一些实际应用
  • 阐释限速和其他类型的机器人管理之间的区别

什么是速率限制?

速率限制是用于限制网络流量的策略。它限制了某人可以在特定时间范围内重复执行某操作的频率(例如,尝试登录一个帐户)。速率限制可以帮助阻止某些类型的恶意机器人活动 。它还可以减少Web服务器上的压力。但是,速率限制不是管理机器人活动的完整解决方案。

通过速率限制可以阻止哪些类型的漫游器攻击?

速率限制通常用于防护恶意机器人对网站或应用程序产生负面影响。速率限制可以帮助防止的机器人攻击包括:

速率限制还可以防止API过度使用,虽然它不一定存在恶意或由于机器人活动引起,但是防止API滥用仍然很重要。

限速如何运作?

速率限制在应用程序中运行,而不是在Web服务器本身运行。通常,速率限制追踪请求的来源IP地址以及每个请求之间经过多少时间。IP地址是应用程序识别发出请求的人员或对象的主要方式。

速率限制解决方案测量每个IP地址发出的每个请求之间的时间,还会测量指定时间范围内的请求数量。如果在给定的时间内来自单个IP的请求太多,则限速解决方案将在一定时间内拒绝满足IP地址的请求。

本质上,受速率限制的应用程序会向正在快速发送请求的个别用户说"嘿,慢一点"。这相当于警察要求超速的驾驶员停靠路边,或者父母告诉孩子在这么短的时间内不要吃太多糖果。

什么是IP地址?

IP地址是分配给连接到互联网任何设备的唯一数字标识符(或在IPv6中为字母数字)。只要设备在线,每个设备都会拥有自己的IP地址,就像实际的街道地址或电话号码一样,这使设备能够来回发送消息。传统的(IPv4)地址如下所示:198.41.129.1

对于用户设备,IP地址通常不是永久不变的,因为IPv4中没有足够的IP地址。相反,用户的互联网服务提供商(ISP)将在设备连接到互联网时动态分配地址。

速率限制解决方案可以使用IP地址作为确定哪些设备发出过多请求的基础,进而会暂时将其阻止。

速率限制如何与用户登录一起使用?

如果用户尝试在短时间内进行过多次失败登录,则可能会发现自己的账户被锁定。当网站设置了登录速率限制,就会发生这种情况。

这种预防措施的存在,不是要为了挫败忘记密码的用户,而是阻止蛮力攻击,它是指机器人尝试数千个不同的密码,以猜测正确的密码并侵入帐户。如果机器人每小时只能进行 3 或 4 次登录尝试,则从统计上讲,此类攻击不太可能成功。

登录页面上的速率限制可以针对尝试登录的用户的IP地址或其用户名。理想情况下会采用两者的结合,因为:

  • 如果仅通过IP地址应用速率限制,则暴力攻击者可以通过尝试从多个IP地址登录(可能使用僵尸网络 )来绕过此限制。
  • 如果仅应用于用户名,那么拥有已知用户名列表的任何攻击者通过同一个IP地址可以使用这些用户名尝试各种常用密码,并且很可能成功闯入至少几个帐户,。

因为速率限制对于防止这些蛮力攻击是必要的,所以忘记密码的用户可能会与恶意机器人一起受到速率限制。用户可能会看到"太多的登录尝试"消息,并提示他们在指定的时间范围之后再次尝试,或者被告知他们完全被锁定在帐户之外。

速率限制如何用于API?

API或应用程序编程接口是一种从程序请求功能的方法。 API对大多数用户是不可见的,但是对于应用程序正常运行而言,它们至关重要。例如,餐馆的网站可以依靠预订服务的API来让客户能够在线进行预订用餐。或者,电子商务平台可以整合运输公司的API,为用户提供准确的运输成本。

每次API响应请求时,该API的所有者都必须为计算时间付费:这是表示码运行并产生对该API请求的响应所需的服务器资源。在上面的示例中,每当餐厅顾客进行预订时,餐厅的API集成将使表预订服务为计算时间收费。

因此,任何为开发人员提供API的应用程序或服务都将限制每个唯一用户每小时或每天可进行多少次API调用。这样,第三方开发人员就不会过度使用API。

速率限制还可以激励开发人员为利用API付出更多的费用:通常,他们为API服务付出的费用越高,能调用的API服务也就越多。

API的速率限制也有助于防御恶意的机器人攻击。攻击者可以使用机器人对API进行多次重复调用,从而使该服务无法提供给其他任何人,或者使服务完全崩溃。这是一种DoS或DDoS攻击。

Twitter和Instagram等社交媒体平台如何使用速率限制?

社交媒体平台速率限制基本上只是API速率限制。例如,任何集成Twitter的第三方应用程序每小时有刷新查找新推文或消息的频率上限。 Instagram对第三方应用程序有类似的限制。这就是为什么用户偶尔会遇到"超过速率限制"消息的原因。

这些限制通常不适用于直接使用社交媒体平台的用户。

机器人管理和速率限制有什么区别?

速率限制基本上是一个维度:它虽然有用,但只能防止非常特定类型的机器人活动。此外,速率限制不仅适用于机器人,而且通常还用于用量限制。 例如,Cloudflare Rate Limiting 可以抵御DDoS攻击、API滥用和蛮力攻击,但不一定能缓解其他形式的恶意机器人活动,也不能区分好机器人和坏机器人。

相比之下,机器人管理通常可以整体检测机器人活动。例如, CloudFlare 机器人管理用机器学习来分辩可能的机器人,这使它能够阻止更广泛的各种机器人攻击(像凭证填充垃圾信息发布、库存囤积等)。