SCW アイコン
ヒーロー背景(区切りなし)
ブログ

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

Jaap Karan Singh
2019年3月28日 掲載
最終更新日: 2026年3月10日

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

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

在本集中,我们将学习:

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

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

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

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

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

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

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

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

修复业务逻辑问题

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

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

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

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

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

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

リソースを確認する
リソースを確認する

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

もっと知りたいですか?

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
Jaap Karan Singh
2019年3月28日発行

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief 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は、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

レポートを確認するデモを予約する
PDFをダウンロード
リソースを確認する
共有する:
リンクトインのブランドソーシャルx ロゴ
もっと知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
Jaap Karan Singh
2019年3月28日発行

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

共有する:
リンクトインのブランドソーシャルx ロゴ

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

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

在本集中,我们将学习:

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

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

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

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

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

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

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

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

修复业务逻辑问题

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

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

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

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

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

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

目次

PDFをダウンロード
リソースを確認する
もっと知りたいですか?

Jaap Karan Singhは、Secure Coding Evangelistであり、Chief Singhであり、Secure Code Warrior の共同設立者です。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を醸成するお手伝いをします。AppSecマネージャー、開発者、最高情報セキュリティ責任者(CISO)、あるいはセキュリティに関わるあらゆる方々の組織において、不安全なコードに関連するリスクの低減を支援します。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

入門に役立つリソース

さらに多くの投稿
リソースセンター

入門に役立つリソース

さらに多くの投稿