首页 > 解决方案 > 限制过快提交的交易

问题描述

在我的 Web 应用程序中,我有一个提供 API 的后端和一个使用它们的前端应用程序。

根据 OWASP 应用程序安全验证标准:

该应用程序将仅按顺序步骤顺序处理业务逻辑流,所有步骤都在真实的人工时间内处理

由于我们使用后端 API 来提交来自前端应用程序的数据,我们如何确保它只在现实的人工时间内进行处理?

如果它是单个应用程序,也许我们可以检查呈现和提交表单之间的时间差,因为我们正在使用 API 不确定如何检查这一点。

标签: apisecurityweb-applicationsowasp

解决方案


让我们假设以下。我们有一个三步过程。步骤如下:

  • 步骤1
  • 第2步
  • 第 3 步

我们要确保没有人在第 1 步之前触发第 2 步,并且他没有在第 1 步之后触发第 2 步。

如果我们是有状态的(因为我们使用例如服务器会话来存储数据),那么解决方案很容易。让我们在会话中存储用户执行的最后一步是第 1 步,并包含时间戳。在执行第 2 步时,我们验证之前存储在会话中的数据。

如果我们想成为无状态的,那么我们可以将信息,即用户使用一些时间戳执行步骤 1 的信息移动到客户端,但使用一些消息身份验证代码 (MAC) 对其进行签名。在这里,我们将面临一个明显的缺陷,即用户可以尝试重用这些数据并制造对步骤 2 的多次调用,而只执行一次步骤 1。为了解决这个问题,我们需要更深入地包含一些我们也能够验证的难以猜测的交易 ID。这将使整个解决方案成为特定的问题。


推荐阅读