速率限制是一种简单但非常有效的技术,用于保护API免遭无意和恶意的过度使用。如果没有速率限制,任何人都可以用请求轰炸服务器并导致吞噬资源的流量高峰,“饿死”其他用户,并使服务无响应。本文介绍了速率限制以及限制到达 API 和服务的请求数量的重要性。我们解释什么是速率限制及其工作原理,并介绍可用于为您的用例采用速率限制的不同类型的算法。,,速率限制是限制用户可以对特定 API 或服务发出的请求数量的做法。您可以限制用户在特定时间范围内重复执行某项操作(即尝试登录帐户或发送消息)的频率。如果有人达到他们的限制,服务器将开始拒绝其他请求。速率限制既是网络安全预防措施,也是软件质量保证 (QA)的关键部分。公司使用速率限制来:,从技术上讲,速率限制是流量整形的一种形式。这种做法让您可以控制流量的流动和分配,以防止基础设施过载或出现故障。大多数具有速率限制的系统的上限都远高于即使是高容量用户也可以实际要求的上限。最常见的例子是社交媒体消息传递。所有社交媒体网站都对您可以发送给其他用户的直接消息的数量设置了上限。如果有人决定向其他配置文件发送一千条消息,速率限制就会启动并阻止用户在一段时间内发送消息。,以下列出了为什么速率限制是任何健康服务的重要方面的主要原因:,为了设置速率限制,管理员对用户在特定时间范围内可以向服务器或 API 发出的请求数量设置上限。通常,限速机制跟踪两个关键因素:,速率限制的主要指标是每秒事务数 (TPS)。如果单个 IP 地址在特定时间段内发出过多请求(即超过其 TPS 限制),则速率限制会阻止服务器或 API 响应。用户收到一条错误消息,并且在计时器重置之前无法发送进一步的请求。,,速率限制总是依赖于某种形式的节流机制来减慢或阻止请求。管理员在服务器端或客户端实施速率限制,具体取决于哪种策略更适合用例:,许多管理员还根据用户名设置速率限制。这种方法可以防止暴力攻击者尝试从多个 IP 地址登录。,让我们看看可用于控制对服务器或 API 的访问的不同类型的速率限制。请记住,您可以将不同类型组合成一个混合策略。例如,您可以限制基于 IP 地址和特定时间间隔的请求数量。, 基于时间的速率限制,基于时间的速率限制在预定义的时间间隔上运行。例如,服务器可以将请求限制为每个时间段的特定数量(例如每分钟 100 个)。基于时间的速率限制通常适用于所有用户。您可以将这些限制设置为固定(计时器倒计时,无论用户何时以及是否提出请求)或滑动(倒计时在有人发出第一个请求时开始)。, 地理速率限制,地理速率限制限制来自特定区域的请求数量。在运行基于位置的广告系列时,这些上限是一个很好的选择。管理员可以限制来自目标受众之外的请求并提高目标区域的可用性。,这些速率限制也有助于防止可疑流量。例如,您可以预测某个地区的用户在晚上 11:00 到早上 8:00 之间不太活跃。您为这次设置了较低的速率限制,这进一步限制了任何希望引起恶意流量问题的攻击者。,, 基于用户的速率限制,基于用户的速率限制控制单个用户在特定时间范围内可以执行的操作数。例如,服务器可能会将每个用户每天可以进行的登录尝试次数限制为 100 次。,基于用户的限制是最常见的速率限制类型。大多数系统跟踪用户的 IP 地址或 API 密钥(或两者)。如果用户超过设定的速率限制,应用程序会拒绝任何进一步的请求,直到每用户计数器重置。请记住,这种类型的速率限制需要系统维护每个用户的使用统计信息。此类设置通常会导致运营开销并增加总体IT 成本。, 并发率限制,并发率限制控制系统在特定时间范围内允许的并行会话数。例如,一个应用程序可能会在一分钟内阻止超过 1000 个会话。, 服务器速率限制,服务器速率限制可帮助管理员在不同服务器之间分担工作负载。例如,如果您运行一个包含五台服务器的分布式架构,您可以使用速率限制为每台设备设置一个上限。,如果其中一台服务器达到其上限,则设备会将其路由到另一台服务器或丢弃请求。这种策略对于实现高可用性和防止针对特定服务器的 DoS 攻击至关重要。, API 基于端点的速率限制,这些速率限制基于用户尝试访问的特定 API 端点。例如,出于安全或过载考虑,管理员可能会将对特定端点的请求限制为每分钟 50 个。, 速率限制算法,以下是公司实施速率限制所依赖的最常见算法:,以下是实施速率限制的分步指南(尽管设置限制的确切方式取决于您的特定技术栈):,对于大多数用例来说,实施速率限制是一个简单的过程。例如,如果您使用 Nginx 作为 Web 服务器并希望在服务器级别设置速率限制,您将使用 ngx_http_limit_req_module模块。只需将以下代码添加到 Nginx 配置文件中,即可根据用户的 IP 地址设置速率限制:,上面的代码平均每秒允许不超过 2 个请求,而突发不能超过 5 个请求。,速率限制对于 API、应用程序和网站的安全性和质量至关重要。未能限制请求数量会使您容易受到基于流量的攻击并导致性能不佳(这会导致更高的跳出率、客户保留问题等)。考虑到实施此预防措施有多么容易,对于大多数用例来说,设置速率限制是一个无需动脑筋的决定。, ,速率限制是一种简单但非常有效的技术,用于保护API免遭无意和恶意的过度使用。如果没有速率限制,任何人都可以用请求轰炸服务器并导致吞噬资源的流量高峰,“饿死”其他用户,并使服务无响应。本文介绍了速率限制以及限制到达 API 和服务的请求数量的重要性。我们解释什么是速率限制及其工作原理,并介绍可用于为您的用例采用速率限制的不同类型的算法。,为了设置速率限制,管理员对用户在特定时间范围内可以向服务器或 API 发出的请求数量设置上限。通常,限速机制跟踪两个关键因素:,
速率限制是一种限制网络流量以防止用户耗尽系统资源的技术。速率限制使恶意行为者更难使系统负担过重并导致拒绝服务(DoS) 等攻击。这涉及攻击者向目标系统发送请求并消耗过多的网络容量、存储和内存。,,使用速率限制的 API 可以限制或暂时阻止任何试图进行过多 API 调用的客户端。它可能会在指定时间内减慢受限用户的请求或完全拒绝它们。速率限制可确保合法请求可以到达系统并访问信息,而不会影响整体应用程序的性能。,这是关于网站安全的系列文章的一部分。,速率限制是现代网络安全策略的重要组成部分。它解决了影响传入请求率的几种攻击技术。,DDoS攻击试图用流量淹没目标系统,使其对合法用户不可用。速率限制通过防止任何给定流量源发送过多请求来减轻 DDoS威胁。然而,DDoS 攻击具有独特的挑战,因为它们在许多不同的来源(有时是数百万个 IP 地址)之间分发请求。分发攻击允许每个源避免超过速率限制。安全解决方案应将来自不同位置的请求识别为单一攻击的一部分,并将它们视为单一来源。,当攻击者破坏包含用户凭据的数据库时,他们可以使用这些凭据进行进一步的攻击。通常,机器人会将窃取的用户凭证填充到登录表单中,直到凭证集起作用,从而允许机器人访问帐户。,机器人通常非常成功,因为它们可以将数百或数千个凭据提交到登录表单中。速率限制有助于识别信用填充并在机器人接管帐户之前阻止它们。,,暴力攻击类似于凭据填充攻击,但没有真实用户凭据列表。在这种情况下,机器人会系统地提交随机生成的凭据,直到凭据集起作用。高度安全的 Web 应用程序设置密码要求有助于减轻暴力攻击,但大型攻击仍会消耗许多网络资源。速率限制阻止这些攻击以节省系统资源。,恶意行为者经常抓取目标网站以获取他们可以出售或用来削弱竞争对手的信息。例如,攻击者可能会窃取电子商务公司的定价信息。爬虫机器人可以从目标应用程序复制大量数据。速率限制检测并阻止数据抓取。,库存拒绝或库存囤积攻击涉及将机器人发送到目标 Web 应用程序,在那里它们开始交易而不完成交易。它囤积库存,使合法用户无法使用。,速率限制在应用程序中起作用,而不是在 Web 服务器中起作用。速率限制通常涉及跟踪发出请求的 IP 地址并识别请求之间的时间间隔。IP 地址是应用程序识别每个请求的发出者的主要方式。,,速率限制解决方案通过测量来自给定 IP 地址的每个请求之间经过的时间并跟踪在设定时间范围内发出的请求数来工作。如果一个 IP 地址在指定的时间范围内发出过多请求,则速率限制解决方案会限制该 IP 地址,并且不会在下一个时间范围内满足其请求。,如果个人用户过于频繁地发出请求,限速应用程序可以告诉他们放慢速度。这好比警察拦下超速司机,或者父母告诉孩子不要在短时间内吃太多糖。,管理员可以在设置速率限制时定义不同的参数和方法以及参数。组织选择的速率限制技术取决于目标和所需的限制级别。以下是组织可能实施的三种主要速率限制方法:,有几种类型的速率限制算法。,固定窗口速率限制算法限制在给定时间范围(窗口)内允许的请求数。例如,服务器的限速组件可能实施一种算法,每分钟最多接受 200 个 API 请求。有一个从指定时间开始的固定时间范围——服务器在 9:00 到 9:01 之间不会处理超过 200 个请求,但窗口将在 9:01 重置,允许另外 200 个请求直到 9:02。,开发人员可以在服务器或用户级别实现固定窗口算法。在用户级别实施该算法将限制每个用户每分钟 200 个请求。相比之下,服务器级别的算法将限制服务器,这意味着所有用户加起来每分钟最多可以发出 200 个请求。,漏桶速率限制算法与固定窗口算法不同,因为它们不依赖于指定的时间范围。他们专注于请求队列的固定长度,而没有考虑时间。服务器将按照先到先得的原则为请求提供服务。新请求加入队列的后面。如果新请求在队列已满时到达,服务器将丢弃该请求。,滑动窗口速率限制算法与固定窗口算法类似,只是每个时间窗口的起始点不同。使用滑动窗口速率限制,时间范围仅在用户发出新请求时开始,而不是预定时间。例如,如果第一个请求在上午 9:00:24 到达(并且速率限制为每分钟 200 个),则服务器将在 9:01:24 之前允许最多 200 个请求。滑动窗口算法有助于解决固定窗口限速中影响请求的问题。它们还通过提供更大的灵活性来缓解漏桶速率限制所面临的饥饿问题。, ,速率限制是一种限制网络流量以防止用户耗尽系统资源的技术。速率限制使恶意行为者更难使系统负担过重并导致拒绝服务(DoS) 等攻击。这涉及攻击者向目标系统发送请求并消耗过多的网络容量、存储和内存。,DDoS攻击试图用流量淹没目标系统,使其对合法用户不可用。速率限制通过防止任何给定流量源发送过多请求来减轻 DDoS威胁。然而,DDoS 攻击具有独特的挑战,因为它们在许多不同的来源(有时是数百万个 IP 地址)之间分发请求。分发攻击允许每个源避免超过速率限制。安全解决方案应将来自不同位置的请求识别为单一攻击的一部分,并将它们视为单一来源。,
速率限制是一种限制网络流量以防止用户耗尽系统资源的技术。速率限制使恶意行为者更难使系统负担过重并导致拒绝服务(DoS) 等攻击。这涉及攻击者向目标系统发送请求并消耗过多的网络容量、存储和内存。,,使用速率限制的 API 可以限制或暂时阻止任何试图进行过多 API 调用的客户端。它可能会在指定时间内减慢受限用户的请求或完全拒绝它们。速率限制可确保合法请求可以到达系统并访问信息,而不会影响整体应用程序的性能。这是关于网站安全的系列文章的一部分。,速率限制是现代网络安全策略的重要组成部分。它解决了影响传入请求率的几种攻击技术。,DDoS 攻击试图用流量淹没目标系统,使其对合法用户不可用。速率限制通过防止任何给定流量源发送过多请求来减轻 DDoS威胁。然而,DDoS 攻击具有独特的挑战,因为它们在许多不同的来源(有时是数百万个 IP 地址)之间分发请求。分发攻击允许每个源避免超过速率限制。安全解决方案应将来自不同位置的请求识别为单一攻击的一部分,并将它们视为单一来源。,当攻击者破坏包含用户凭据的数据库时,他们可以使用这些凭据进行进一步的攻击。通常,机器人会将窃取的用户凭证填充到登录表单中,直到凭证集起作用,从而允许机器人访问帐户。机器人通常非常成功,因为它们可以将数百或数千个凭据提交到登录表单中。速率限制有助于识别信用填充并在机器人接管帐户之前阻止它们。,,暴力攻击类似于凭据填充攻击,但没有真实用户凭据列表。在这种情况下,机器人会系统地提交随机生成的凭据,直到凭据集起作用。高度安全的 Web 应用程序设置密码要求有助于减轻暴力攻击,但大型攻击仍会消耗许多网络资源。速率限制阻止这些攻击以节省系统资源。,恶意行为者经常抓取目标网站以获取他们可以出售或用来削弱竞争对手的信息。例如,攻击者可能会窃取电子商务公司的定价信息。爬虫机器人可以从目标应用程序复制大量数据。速率限制检测并阻止数据抓取。,库存拒绝或库存囤积攻击涉及将机器人发送到目标 Web 应用程序,在那里它们开始交易而不完成交易。它囤积库存,使合法用户无法使用。,在我们的详细指南中了解更多信息:,速率限制在应用程序中起作用,而不是在 Web 服务器中起作用。速率限制通常涉及跟踪发出请求的 IP 地址并识别请求之间的时间间隔。IP 地址是应用程序识别每个请求的发出者的主要方式。,,速率限制解决方案通过测量来自给定 IP 地址的每个请求之间经过的时间并跟踪在设定时间范围内发出的请求数来工作。如果一个 IP 地址在指定的时间范围内发出过多请求,则速率限制解决方案会限制该 IP 地址,并且不会在下一个时间范围内满足其请求。,如果个人用户过于频繁地发出请求,限速应用程序可以告诉他们放慢速度。这好比警察拦下超速司机,或者父母告诉孩子不要在短时间内吃太多糖。,管理员可以在设置速率限制时定义不同的参数和方法以及参数。组织选择的速率限制技术取决于目标和所需的限制级别。以下是组织可能实施的三种主要速率限制方法:,有几种类型的速率限制算法。,固定窗口速率限制算法限制在给定时间范围(窗口)内允许的请求数。例如,服务器的限速组件可能实施一种算法,每分钟最多接受 200 个 API 请求。有一个从指定时间开始的固定时间范围——服务器在 9:00 到 9:01 之间不会处理超过 200 个请求,但窗口将在 9:01 重置,允许另外 200 个请求直到 9:02。,开发人员可以在服务器或用户级别实现固定窗口算法。在用户级别实施该算法将限制每个用户每分钟 200 个请求。相比之下,服务器级别的算法将限制服务器,这意味着所有用户加起来每分钟最多可以发出 200 个请求。,漏桶速率限制算法与固定窗口算法不同,因为它们不依赖于指定的时间范围。他们专注于请求队列的固定长度,而没有考虑时间。服务器将按照先到先得的原则为请求提供服务。新请求加入队列的后面。如果新请求在队列已满时到达,服务器将丢弃该请求。,,滑动窗口速率限制算法与固定窗口算法类似,只是每个时间窗口的起始点不同。使用滑动窗口速率限制,时间范围仅在用户发出新请求时开始,而不是预定时间。例如,如果第一个请求在上午 9:00:24 到达(并且速率限制为每分钟 200 个),则服务器将在 9:01:24 之前允许最多 200 个请求。滑动窗口算法有助于解决固定窗口限速中影响请求的问题。它们还通过提供更大的灵活性来缓解漏桶速率限制所面临的饥饿问题。, ,速率限制是一种限制网络流量以防止用户耗尽系统资源的技术。速率限制使恶意行为者更难使系统负担过重并导致拒绝服务(DoS) 等攻击。这涉及攻击者向目标系统发送请求并消耗过多的网络容量、存储和内存。,当攻击者破坏包含用户凭据的数据库时,他们可以使用这些凭据进行进一步的攻击。通常,机器人会将窃取的用户凭证填充到登录表单中,直到凭证集起作用,从而允许机器人访问帐户。机器人通常非常成功,因为它们可以将数百或数千个凭据提交到登录表单中。速率限制有助于识别信用填充并在机器人接管帐户之前阻止它们。,