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

程序员征服安全:分享与学习系列-业务逻辑问题

Jaap Karan Singh
2019 年 3 月 28 日 发布
最后更新于 2026年3月10日

与我们在本Share & Learn系列中介绍的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关系。尽管编码问题可能是问题的一部分,但业务逻辑错误通常是由首次创建应用程序时的设计缺陷或错误的逻辑假设造成的。

如果用户在使用应用程序时采取了意想不到的操作,则可能会出现业务逻辑问题。这几乎可以是任何事情——从意外取消订单、使用优惠券代码的次数过多,或者干脆跳过预期的步骤并采取应用程序不知道如何处理的操作。利用业务逻辑缺陷甚至不需要任何培训,只需要一个心怀好奇心并愿意跳出框框思考的恶意用户即可。

在本集中,我们将学习:

  • 攻击者如何利用业务逻辑中的缺陷
  • 为什么存在业务逻辑缺陷的应用程序很危险
  • 可以防止业务逻辑错误的技术。

攻击者如何利用业务逻辑问题?

与大多数漏洞不同,我们无法指出可能导致此漏洞的特定代码串。相反,这取决于用户采取意想不到的操作,以及哪些程序不知道如何处理。举个例子,假设银行应用程序允许用户将钱转入其他账户。但是,恶意用户不是汇款,而是尝试向另一个账户汇款负数。银行应用程序将如何反应?它会崩溃吗?它会拒绝转移吗?或者它实际上会向发起转账的用户退款以平衡负数吗?

电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是独一无二的,因为它们是为许多用户互动而设计的,并且包含许多组件。用户意外取消订单、多次尝试使用单张优惠券,甚至超载购物车的用户,可能会给申请带来意想不到的条件。实际上,没有办法知道程序在遇到未知情况时会如何反应。最好的情况可能是生成错误消息,但不能保证应用程序不会采取更糟糕的操作,例如免费提供商品。

为什么业务逻辑问题很危险?

业务逻辑问题可能极其危险,因为任何人都可以利用这些问题,即使是没有经过编程或黑客培训的人也是如此。实际上,它只需要实验和时间,四处点击并尝试发现应用程序设计响应方式中的缺陷。而且,一旦恶意用户发现网站业务逻辑中的漏洞,你可以打赌他们会尽可能地利用这个漏洞。

最大的危险通常是经济上的,让用户在不付费的情况下购买20台大屏幕电视或类似的东西。但是业务逻辑缺陷也可能导致其他问题。例如,如果保护网站的密码功能不知道如果用户不断点击 “取消” 该怎么做,则可能会让他们完全绕过登录过程。

实际上无法预测业务逻辑问题可能造成多大的损害。通常,问题的第一个迹象是在用户利用问题很久之后才出现的。

修复业务逻辑问题

不幸的是,使用漏洞扫描器等常用工具无助于识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免它们的最佳方法是在开发应用程序时对负面测试用例进行良好的规划、错误处理和测试。这首先需要一组明确定义的业务规则,其中包括应用程序设计要采取的所有可能和预期的操作。

有了业务规则计划,防止业务逻辑缺陷蔓延的最佳方法之一是创建流程图,显示数据和交易应在应用程序内流动的所有可能方式。这包括用户能够做出选择或输入数据的每个实例的建模行为。不断检查以确保流程图中可能的操作与业务规则计划中的功能相匹配。

最后,使用威胁建模来帮助识别设计、实施和测试阶段业务逻辑中的缺陷。作为万无一失的保障,创建程序在遇到任何未特别预期的情况时应采取的操作。这可能很简单,比如拒绝该操作并提醒管理员注意遇到的问题。

有关业务逻辑问题的更多信息

要进一步阅读,你可以看看上的 OWASP 页面 业务逻辑问题。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

准备好立即寻找和摧毁业务逻辑漏洞了吗?前往平台测试你的技能: [从这里开始]

查看资源
查看资源

尽管编码问题可能是问题的一部分,但业务逻辑错误通常是由首次创建应用程序时的设计缺陷或错误的逻辑假设造成的。

对更多感兴趣?

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
Jaap Karan Singh
2019年3月28日出版

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

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

与我们在本Share & Learn系列中介绍的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关系。尽管编码问题可能是问题的一部分,但业务逻辑错误通常是由首次创建应用程序时的设计缺陷或错误的逻辑假设造成的。

如果用户在使用应用程序时采取了意想不到的操作,则可能会出现业务逻辑问题。这几乎可以是任何事情——从意外取消订单、使用优惠券代码的次数过多,或者干脆跳过预期的步骤并采取应用程序不知道如何处理的操作。利用业务逻辑缺陷甚至不需要任何培训,只需要一个心怀好奇心并愿意跳出框框思考的恶意用户即可。

在本集中,我们将学习:

  • 攻击者如何利用业务逻辑中的缺陷
  • 为什么存在业务逻辑缺陷的应用程序很危险
  • 可以防止业务逻辑错误的技术。

攻击者如何利用业务逻辑问题?

与大多数漏洞不同,我们无法指出可能导致此漏洞的特定代码串。相反,这取决于用户采取意想不到的操作,以及哪些程序不知道如何处理。举个例子,假设银行应用程序允许用户将钱转入其他账户。但是,恶意用户不是汇款,而是尝试向另一个账户汇款负数。银行应用程序将如何反应?它会崩溃吗?它会拒绝转移吗?或者它实际上会向发起转账的用户退款以平衡负数吗?

电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是独一无二的,因为它们是为许多用户互动而设计的,并且包含许多组件。用户意外取消订单、多次尝试使用单张优惠券,甚至超载购物车的用户,可能会给申请带来意想不到的条件。实际上,没有办法知道程序在遇到未知情况时会如何反应。最好的情况可能是生成错误消息,但不能保证应用程序不会采取更糟糕的操作,例如免费提供商品。

为什么业务逻辑问题很危险?

业务逻辑问题可能极其危险,因为任何人都可以利用这些问题,即使是没有经过编程或黑客培训的人也是如此。实际上,它只需要实验和时间,四处点击并尝试发现应用程序设计响应方式中的缺陷。而且,一旦恶意用户发现网站业务逻辑中的漏洞,你可以打赌他们会尽可能地利用这个漏洞。

最大的危险通常是经济上的,让用户在不付费的情况下购买20台大屏幕电视或类似的东西。但是业务逻辑缺陷也可能导致其他问题。例如,如果保护网站的密码功能不知道如果用户不断点击 “取消” 该怎么做,则可能会让他们完全绕过登录过程。

实际上无法预测业务逻辑问题可能造成多大的损害。通常,问题的第一个迹象是在用户利用问题很久之后才出现的。

修复业务逻辑问题

不幸的是,使用漏洞扫描器等常用工具无助于识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免它们的最佳方法是在开发应用程序时对负面测试用例进行良好的规划、错误处理和测试。这首先需要一组明确定义的业务规则,其中包括应用程序设计要采取的所有可能和预期的操作。

有了业务规则计划,防止业务逻辑缺陷蔓延的最佳方法之一是创建流程图,显示数据和交易应在应用程序内流动的所有可能方式。这包括用户能够做出选择或输入数据的每个实例的建模行为。不断检查以确保流程图中可能的操作与业务规则计划中的功能相匹配。

最后,使用威胁建模来帮助识别设计、实施和测试阶段业务逻辑中的缺陷。作为万无一失的保障,创建程序在遇到任何未特别预期的情况时应采取的操作。这可能很简单,比如拒绝该操作并提醒管理员注意遇到的问题。

有关业务逻辑问题的更多信息

要进一步阅读,你可以看看上的 OWASP 页面 业务逻辑问题。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

准备好立即寻找和摧毁业务逻辑漏洞了吗?前往平台测试你的技能: [从这里开始]

查看资源
查看资源

填写下面的表格下载报告

我们希望获得您的许可,以便向您发送有关我们的产品和/或相关安全编码主题的信息。我们将始终非常谨慎地对待您的个人信息,绝不会出于营销目的将其出售给其他公司。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用“分析”Cookie。完成后,可以随意再次禁用它们。

与我们在本Share & Learn系列中介绍的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关系。尽管编码问题可能是问题的一部分,但业务逻辑错误通常是由首次创建应用程序时的设计缺陷或错误的逻辑假设造成的。

如果用户在使用应用程序时采取了意想不到的操作,则可能会出现业务逻辑问题。这几乎可以是任何事情——从意外取消订单、使用优惠券代码的次数过多,或者干脆跳过预期的步骤并采取应用程序不知道如何处理的操作。利用业务逻辑缺陷甚至不需要任何培训,只需要一个心怀好奇心并愿意跳出框框思考的恶意用户即可。

在本集中,我们将学习:

  • 攻击者如何利用业务逻辑中的缺陷
  • 为什么存在业务逻辑缺陷的应用程序很危险
  • 可以防止业务逻辑错误的技术。

攻击者如何利用业务逻辑问题?

与大多数漏洞不同,我们无法指出可能导致此漏洞的特定代码串。相反,这取决于用户采取意想不到的操作,以及哪些程序不知道如何处理。举个例子,假设银行应用程序允许用户将钱转入其他账户。但是,恶意用户不是汇款,而是尝试向另一个账户汇款负数。银行应用程序将如何反应?它会崩溃吗?它会拒绝转移吗?或者它实际上会向发起转账的用户退款以平衡负数吗?

电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是独一无二的,因为它们是为许多用户互动而设计的,并且包含许多组件。用户意外取消订单、多次尝试使用单张优惠券,甚至超载购物车的用户,可能会给申请带来意想不到的条件。实际上,没有办法知道程序在遇到未知情况时会如何反应。最好的情况可能是生成错误消息,但不能保证应用程序不会采取更糟糕的操作,例如免费提供商品。

为什么业务逻辑问题很危险?

业务逻辑问题可能极其危险,因为任何人都可以利用这些问题,即使是没有经过编程或黑客培训的人也是如此。实际上,它只需要实验和时间,四处点击并尝试发现应用程序设计响应方式中的缺陷。而且,一旦恶意用户发现网站业务逻辑中的漏洞,你可以打赌他们会尽可能地利用这个漏洞。

最大的危险通常是经济上的,让用户在不付费的情况下购买20台大屏幕电视或类似的东西。但是业务逻辑缺陷也可能导致其他问题。例如,如果保护网站的密码功能不知道如果用户不断点击 “取消” 该怎么做,则可能会让他们完全绕过登录过程。

实际上无法预测业务逻辑问题可能造成多大的损害。通常,问题的第一个迹象是在用户利用问题很久之后才出现的。

修复业务逻辑问题

不幸的是,使用漏洞扫描器等常用工具无助于识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免它们的最佳方法是在开发应用程序时对负面测试用例进行良好的规划、错误处理和测试。这首先需要一组明确定义的业务规则,其中包括应用程序设计要采取的所有可能和预期的操作。

有了业务规则计划,防止业务逻辑缺陷蔓延的最佳方法之一是创建流程图,显示数据和交易应在应用程序内流动的所有可能方式。这包括用户能够做出选择或输入数据的每个实例的建模行为。不断检查以确保流程图中可能的操作与业务规则计划中的功能相匹配。

最后,使用威胁建模来帮助识别设计、实施和测试阶段业务逻辑中的缺陷。作为万无一失的保障,创建程序在遇到任何未特别预期的情况时应采取的操作。这可能很简单,比如拒绝该操作并提醒管理员注意遇到的问题。

有关业务逻辑问题的更多信息

要进一步阅读,你可以看看上的 OWASP 页面 业务逻辑问题。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

准备好立即寻找和摧毁业务逻辑漏洞了吗?前往平台测试你的技能: [从这里开始]

观看网络研讨会
开始吧
了解更多

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
分享到:
领英品牌社交x 标志
对更多感兴趣?

分享到:
领英品牌社交x 标志
作者
Jaap Karan Singh
2019年3月28日出版

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

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

与我们在本Share & Learn系列中介绍的大多数其他漏洞不同,业务逻辑问题与编码错误没有直接关系。尽管编码问题可能是问题的一部分,但业务逻辑错误通常是由首次创建应用程序时的设计缺陷或错误的逻辑假设造成的。

如果用户在使用应用程序时采取了意想不到的操作,则可能会出现业务逻辑问题。这几乎可以是任何事情——从意外取消订单、使用优惠券代码的次数过多,或者干脆跳过预期的步骤并采取应用程序不知道如何处理的操作。利用业务逻辑缺陷甚至不需要任何培训,只需要一个心怀好奇心并愿意跳出框框思考的恶意用户即可。

在本集中,我们将学习:

  • 攻击者如何利用业务逻辑中的缺陷
  • 为什么存在业务逻辑缺陷的应用程序很危险
  • 可以防止业务逻辑错误的技术。

攻击者如何利用业务逻辑问题?

与大多数漏洞不同,我们无法指出可能导致此漏洞的特定代码串。相反,这取决于用户采取意想不到的操作,以及哪些程序不知道如何处理。举个例子,假设银行应用程序允许用户将钱转入其他账户。但是,恶意用户不是汇款,而是尝试向另一个账户汇款负数。银行应用程序将如何反应?它会崩溃吗?它会拒绝转移吗?或者它实际上会向发起转账的用户退款以平衡负数吗?

电子商务网站特别容易受到业务逻辑缺陷的影响,尽管不是独一无二的,因为它们是为许多用户互动而设计的,并且包含许多组件。用户意外取消订单、多次尝试使用单张优惠券,甚至超载购物车的用户,可能会给申请带来意想不到的条件。实际上,没有办法知道程序在遇到未知情况时会如何反应。最好的情况可能是生成错误消息,但不能保证应用程序不会采取更糟糕的操作,例如免费提供商品。

为什么业务逻辑问题很危险?

业务逻辑问题可能极其危险,因为任何人都可以利用这些问题,即使是没有经过编程或黑客培训的人也是如此。实际上,它只需要实验和时间,四处点击并尝试发现应用程序设计响应方式中的缺陷。而且,一旦恶意用户发现网站业务逻辑中的漏洞,你可以打赌他们会尽可能地利用这个漏洞。

最大的危险通常是经济上的,让用户在不付费的情况下购买20台大屏幕电视或类似的东西。但是业务逻辑缺陷也可能导致其他问题。例如,如果保护网站的密码功能不知道如果用户不断点击 “取消” 该怎么做,则可能会让他们完全绕过登录过程。

实际上无法预测业务逻辑问题可能造成多大的损害。通常,问题的第一个迹象是在用户利用问题很久之后才出现的。

修复业务逻辑问题

不幸的是,使用漏洞扫描器等常用工具无助于识别或修复业务逻辑问题,因为业务逻辑问题的测试不容易自动化。避免它们的最佳方法是在开发应用程序时对负面测试用例进行良好的规划、错误处理和测试。这首先需要一组明确定义的业务规则,其中包括应用程序设计要采取的所有可能和预期的操作。

有了业务规则计划,防止业务逻辑缺陷蔓延的最佳方法之一是创建流程图,显示数据和交易应在应用程序内流动的所有可能方式。这包括用户能够做出选择或输入数据的每个实例的建模行为。不断检查以确保流程图中可能的操作与业务规则计划中的功能相匹配。

最后,使用威胁建模来帮助识别设计、实施和测试阶段业务逻辑中的缺陷。作为万无一失的保障,创建程序在遇到任何未特别预期的情况时应采取的操作。这可能很简单,比如拒绝该操作并提醒管理员注意遇到的问题。

有关业务逻辑问题的更多信息

要进一步阅读,你可以看看上的 OWASP 页面 业务逻辑问题。你还可以使用以下方法来测试你新获得的防御知识 免费演示 Secure Code Warrior 平台,该平台培训网络安全团队成为终极网络战士。要了解有关克服此漏洞以及其他恶棍威胁的更多信息,请访问 安全代码勇士博客

准备好立即寻找和摧毁业务逻辑漏洞了吗?前往平台测试你的技能: [从这里开始]

目录

下载PDF
查看资源
对更多感兴趣?

Jaap Karan Singh是一位安全编码布道者,首席辛格和Secure Code Warrior 的共同创始人。

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

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

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子