SCW图标
英雄背景无分隔线
博客

Programmierer erobern Sicherheit OWASP Top 10 API-Serie — Mangel an Ressourcen und Ratenbegrenzung

马蒂亚斯-马杜博士
出版日期 2020 年 9 月 30 日
最后更新于 2026年3月9日

随着资源的缺乏和速率的限制,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 培训平台的演示,以保持你所有网络安全技能的磨练和更新。

查看资源
查看资源

Diese Sicherheitsanfälligkeit tritt auf, wenn zu viele Anfragen gleichzeitig eingehen und die API nicht über genügend Rechenressourcen verfügt, um diese Anfragen zu bearbeiten. Die API kann dann nicht mehr verfügbar sein oder nicht mehr auf neue Anfragen reagieren.

想了解更多吗?

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

了解更多

Secure Code Warrior 您的Secure Code Warrior 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
发表于2020年9月30日

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

马蒂亚斯是一名研究员和开发人员,拥有超过15年的软件安全实践经验。他曾为Fortify Software和他自己的公司Sensei Security等公司开发解决方案。在他的职业生涯中,马蒂亚斯领导了多个应用安全研究项目,并将其转化为商业产品,他拥有超过10项专利。当他离开办公桌时,Matias曾担任高级应用安全培训courses ,并定期在全球会议上发言,包括RSA会议、黑帽、DefCon、BSIMM、OWASP AppSec和BruCon。

马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。

分享到:
领英品牌社交x 标志

随着资源的缺乏和速率的限制,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 培训平台的演示,以保持你所有网络安全技能的磨练和更新。

查看资源
查看资源

请填写下方表格以下载报告

我们恳请您允许我们向您发送有关我们产品及/或安全编码相关主题的信息。我们将始终以最高标准谨慎处理您的个人数据,绝不会为营销目的将其出售给其他企业。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用“Analytics”Cookie。完成后,您可随时将其关闭。

随着资源的缺乏和速率的限制,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 您的Secure Code Warrior 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

查看报告预约演示
下载PDF文件
查看资源
分享到:
领英品牌社交x 标志
想了解更多吗?

分享到:
领英品牌社交x 标志
作者
马蒂亚斯-马杜博士
发表于2020年9月30日

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

马蒂亚斯是一名研究员和开发人员,拥有超过15年的软件安全实践经验。他曾为Fortify Software和他自己的公司Sensei Security等公司开发解决方案。在他的职业生涯中,马蒂亚斯领导了多个应用安全研究项目,并将其转化为商业产品,他拥有超过10项专利。当他离开办公桌时,Matias曾担任高级应用安全培训courses ,并定期在全球会议上发言,包括RSA会议、黑帽、DefCon、BSIMM、OWASP AppSec和BruCon。

马蒂亚斯拥有根特大学的计算机工程博士学位,在那里他研究了通过程序混淆来隐藏应用程序的内部工作的应用安全。

分享到:
领英品牌社交x 标志

随着资源的缺乏和速率的限制,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文件
查看资源
想了解更多吗?

Matias Madou, Ph.D.是一位安全专家、研究员和CTO,也是Secure Code Warrior 的联合创始人。Matias在根特大学获得了应用安全的博士学位,主要研究静态分析解决方案。后来他加入了美国的Fortify公司,在那里他意识到,仅仅检测代码问题而不帮助开发人员编写安全代码是不够的。这激发了他开发产品的热情,帮助开发人员,减轻安全的负担,并超越客户的期望。当他不在办公桌前作为Awesome团队的一员时,他喜欢站在舞台上,在包括RSA会议、BlackHat和DefCon等会议上发表演讲。

了解更多

Secure Code Warrior 您的Secure Code Warrior 帮助您在整个软件开发周期中保障代码安全,并建立将网络安全置于首位的企业文化。无论您是应用安全经理、开发人员、首席信息安全官,还是其他从事安全工作的人员,我们都能协助您的企业降低不安全代码带来的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

入门资源

更多文章
资源中心

入门资源

更多文章