程序员攻克安全:OWASP API 安全十大风险系列——资源匮乏与速率限制

正如其名,资源匮乏和速率限制不足会导致 API 出现漏洞。每个 API 根据其运行环境,所拥有的资源和计算能力都是有限的。大多数 API 还需要处理来自用户或其他程序的请求,以执行其预定功能。当大量请求同时涌入,且 API 没有足够的计算资源来处理这些请求时,就会出现此漏洞。此时,API 可能会变得不可用或对新请求无响应。
如果 API 的速率或资源限制设置不当,或者在代码中未定义限制,就会产生此类漏洞。例如,当企业业务处于高峰期时,API 可能会因过载而崩溃。但这同时也是一个安全漏洞,因为攻击者可以故意用大量请求淹没未受保护的 API,从而实施拒绝服务 (DDoS) 攻击。
顺便问一下,到目前为止,您在 API 游戏化挑战中的表现如何?如果您现在想尝试处理速率限制漏洞,请进入竞技场:
现在,让我们深入探讨一下。
关于 API 资源匮乏和速率限制不足的漏洞,有哪些具体示例?
这种漏洞潜入 API 的方式主要有两种。第一种是开发人员根本没有定义 API 的限流速率。虽然基础设施中可能存在默认的限流设置,但依赖这种设置并非良策。相反,每个 API 都应单独设置其速率。这一点尤为重要,因为不同 API 的功能和可用资源可能存在巨大差异。
例如,一个仅供少数用户使用的内部 API,设置较低的限流速率即可正常工作。但对于一个实时电商网站的公共 API,则很可能需要设置极高的速率,以应对并发用户激增的情况。在这两种情况下,限流速率都应根据预期需求、潜在用户数量和可用计算能力来定义。
为了追求性能最大化,人们往往倾向于将速率设置为无限制,尤其是在那些业务繁忙的 API 上。这可以通过一段简单的代码来实现(例如,我们使用 Python Django REST 框架):
"DEFAULT_THROTTLE_RATES: {
"anon: None,
"user: None
在上述示例中,无论是匿名用户还是系统已知用户,都可以无限次地访问 API,而不受请求频率的限制。这是一个糟糕的做法,因为无论 API 拥有多少计算资源,攻击者都可以利用僵尸网络等手段,最终使其运行缓慢甚至彻底瘫痪。一旦发生这种情况,合法用户将被拒绝访问,攻击也就得逞了。
消除资源匮乏和速率限制问题
组织部署的每个 API 都应在代码中定义其限流速率。这可以包括执行超时时间、最大允许内存、每页返回给用户的记录数,或在特定时间段内允许的进程数等。
参考上面的例子,与其完全不设限,不如针对匿名用户和已知用户分别设置严格的限流速率。
"DEFAULT_THROTTLE_RATES: {
"anon: config("THROTTLE_ANON, default=200/hour),
"user: config("THROTTLE_USER, default=5000/hour)
在这个新示例中,API 将限制匿名用户每小时最多发送 200 个请求。而经过系统验证的已知用户则享有更高的限额,即每小时 5,000 个请求。但即便如此,仍需设置上限,以防止高峰时段意外过载,或在用户账户被盗用并用于拒绝服务攻击时起到缓冲作用。
最后,还有一个值得推荐的最佳实践:当用户达到限流阈值时,向其显示通知并说明重置时间。这样,合法用户就能明白为什么应用程序拒绝了他们的请求。如果合法用户在执行正常任务时被拒绝访问,这也有助于提醒运维人员需要提高限流阈值。
请查看 Secure Code Warrior 博客页面,深入了解此漏洞,以及如何保护您的组织和客户免受其他安全漏洞的侵害。您还可以 申请演示 Secure Code Warrior 培训平台,以保持您的网络安全技能精进且与时俱进。
在 AI 驱动的开发成果发布前实现有效治理
评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。
探索更多博客
获取有关安全编码、人工智能治理和软件风险管理的专家内容。
%252520%252520(3).avif)
Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

Security as culture: How Blue Prism cultivates world-class secure developers
Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed
在产品发布前确保 AI 驱动的开发安全
洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。



.avif)