上QQ阅读APP看书,第一时间看更新
0.3.5 速率限制测试
速率限制是一种对在特定时间内API消费者可发起请求数量的约束措施。这一限制由API提供商的Web服务器、防火墙或WAF实施,对API提供商具有两大关键作用:一是有助于实现API货币化,二是能够防止资源被过度消耗。由于速率限制是实现API货币化的核心要素,因此在API项目开发过程中应对速率限制给予充分关注。
例如,一家公司可能会设定免费级API用户每小时仅能发起一次请求。在发起此请求后,用户在接下来的一小时内将无法再发起其他请求。然而,若用户选择付费,他们便能在一小时内发起大量请求。若没有充足的控制措施,这些未付费的API用户可能会试图规避收费,从而无限制地消耗大量数据。速率限制测试与拒绝服务测试有所区别。DoS测试旨在通过攻击破坏服务,使系统和应用程序对用户不可用,以评估组织的计算资源弹性。而速率限制测试则旨在评估在给定时间段内绕过限制发送请求的数量。试图绕过速率限制并不一定会导致服务中断,反而可能助长其他攻击,并揭示组织在API货币化策略中的漏洞。
通常来说,各类组织会在API文档中明确规定API请求的限制。这些限制的具体内容可能包括:在指定的Y时间段内,允许发起的最大请求次数为X。若超过此限制,将从我们的Web服务器接收到代码为Z的响应。以Twitter为例,其根据授权等级设定请求次数限制。第一层授权用户每15分钟可发起15次请求,而第二层授权用户每15分钟可发起180次请求。若超过请求上限,用户将收到HTTP错误代码420,如图0-1所示。
图0-1 Twitter的HTTP状态码