
コーダーがセキュリティを征服する OWASP トップ 10 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次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。
作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问API,这也是有帮助的,因为它可以向运营人员发出信号,表明需要增加节流。
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试一下 Secure Code Warrior 培训平台的演示,以保持你所有网络安全技能的磨练和更新。


この脆弱性は、同時に受信するリクエストが多すぎて、それらのリクエストを処理するための十分なコンピューティングリソースが API にない場合に発生します。そうすると、API が使用できなくなったり、新しいリクエストに応答しなくなったりする可能性があります。
马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并协助构建将网络安全置于首位的文化。无论您是应用程序安全经理、开发人员、首席信息安全官还是安全相关人员,我们都能帮助您降低与不安全代码相关的风险。
预约演示马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。
马蒂亚斯是一位拥有15年以上软件安全实践经验的研究员兼开发者。他曾为Fortify Software、其创立的Sensei Security等企业开发解决方案。在职业生涯中,马蒂亚斯主导了多个应用安全研究项目,这些项目最终转化为商用产品,并获得了10余项专利。在离开办公桌时,马蒂亚斯担任高级应用安全培训课程讲师,并定期在RSA大会、黑帽大会、DefCon、BSIMM、OWASP应用安全大会、BruCon等全球性会议上发表演讲。
马蒂亚斯在根特大学获得计算机工程博士学位,期间学习了通过程序混淆技术隐藏应用程序内部运作机制的应用程序安全技术。


随着资源的缺乏和速率的限制,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次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。
作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问API,这也是有帮助的,因为它可以向运营人员发出信号,表明需要增加节流。
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试一下 Secure Code Warrior 培训平台的演示,以保持你所有网络安全技能的磨练和更新。

随着资源的缺乏和速率的限制,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次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。
作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问API,这也是有帮助的,因为它可以向运营人员发出信号,表明需要增加节流。
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试一下 Secure Code Warrior 培训平台的演示,以保持你所有网络安全技能的磨练和更新。

请点击以下链接下载此资源的PDF文件。
Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并协助构建将网络安全置于首位的文化。无论您是应用程序安全经理、开发人员、首席信息安全官还是安全相关人员,我们都能帮助您降低与不安全代码相关的风险。
显示报告预约演示马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。
马蒂亚斯是一位拥有15年以上软件安全实践经验的研究员兼开发者。他曾为Fortify Software、其创立的Sensei Security等企业开发解决方案。在职业生涯中,马蒂亚斯主导了多个应用安全研究项目,这些项目最终转化为商用产品,并获得了10余项专利。在离开办公桌时,马蒂亚斯担任高级应用安全培训课程讲师,并定期在RSA大会、黑帽大会、DefCon、BSIMM、OWASP应用安全大会、BruCon等全球性会议上发表演讲。
马蒂亚斯在根特大学获得计算机工程博士学位,期间学习了通过程序混淆技术隐藏应用程序内部运作机制的应用程序安全技术。
随着资源的缺乏和速率的限制,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次请求。已经被系统审核过的已知用户会有更大的回旋余地,每小时有5000个请求。但即使是他们也受到限制,以防止在高峰期意外超载,或者在用户账户被泄露并被用于拒绝服务攻击时进行补偿。
作为最后一个要考虑的良好做法,当用户达到节流限制时,向他们显示一个通知,同时解释这些限制何时会被重置,这是一个好主意。这样一来,有效用户就会知道为什么一个应用程序拒绝他们的请求。如果执行批准任务的有效用户被拒绝访问API,这也是有帮助的,因为它可以向运营人员发出信号,表明需要增加节流。
请查看 Secure Code Warrior博客页面,了解有关这一漏洞的更多见解,以及如何保护你的组织和客户免受其他安全缺陷的蹂躏。你也可以尝试一下 Secure Code Warrior 培训平台的演示,以保持你所有网络安全技能的磨练和更新。
目录
马蒂亚斯·马杜博士是安全专家、研究员、首席技术官,以及安全代码战士的联合创始人。马蒂亚斯在根特大学以静态分析解决方案为核心,获得了应用安全领域的博士学位。此后他加入美国Fortify公司,并意识到仅检测代码问题而未协助开发者编写安全代码是远远不够的。这一认知促使他致力于开发能帮助开发者减轻安全负担、超越客户期望的产品。作为Team Awesome成员,当他不在办公桌前时,最享受在RSA大会、BlackHat、DefCon等技术会议上登台演讲的时刻。

Secure Code Warrior致力于在整个软件开发生命周期中保护代码,并协助构建将网络安全置于首位的文化。无论您是应用程序安全经理、开发人员、首席信息安全官还是安全相关人员,我们都能帮助您降低与不安全代码相关的风险。
预约演示[下载]开始所需的资源
Trust Agent:AI - Secure and scale AI-Drive development
AI is writing code. Who’s governing it? With up to 50% of AI-generated code containing security weaknesses, managing AI risk is critical. Discover how SCW's Trust Agent: AI provides the real-time visibility, proactive governance, and targeted upskilling needed to scale AI-driven development securely.
OpenText 应用程序安全性的强大功能 + Secure Code Warrior
OpenText Application Security and Secure Code Warrior combine vulnerability detection with AI Software Governance and developer capability. Together, they help organizations reduce risk, strengthen secure coding practices, and confidently adopt AI-driven development.
Secure Code Warrior corporate overview
Secure Code Warrior is an AI Software Governance platform designed to enable organizations to safely adopt AI-driven development by bridging the gap between development velocity and enterprise security. The platform addresses the "Visibility Gap," where security teams often lack insights into shadow AI coding tools and the origins of production code.




