如何使用 Django 实现手动安全程序

How to implement a manual security procedure with Django

我正在使用 Django 框架编写 Web 应用程序。此 Web 应用程序基于 API,我使用的是 Django rest_framework。我有一个安全问题:在第一页上,用户必须解决一个 Recaptcha。在解决 Recaptcha 之后,我的网站为用户提供了一个会话 ID,在此之后,用户必须 post 在所有 his/her API 调用和每个 API 的正文中使用此会话 ID ] 只能使用特定会话 ID 调用一次。换句话说,我有一个状态机供用户调用 APIs,在每个状态下,用户都可以调用 APIs,这些 APIs 具有来自该状态的相应传出边。

上述所有程序的目的都是防止用户抓取我的网站。 (用户不能使用会话 ID 多次调用 API,he/she 应作为普通用户,每个 API 最多调用两到三次)

现在我的问题是我应该如何在我的 Django 应用程序中处理这个问题?在此之前,我只是使用普通的 Django 会话中间件来处理会话。现在我应该完全以手动方式处理身份验证过程并传递和获取会话 ID,还是有一种方法可以使用该中间件来处理我的过程。

为您的 APIView 使用自定义权限 类 来阻止此类请求。 在这里阅读更多 https://www.django-rest-framework.org/api-guide/permissions/#custom-permissions

您只需保存用户状态即可完成此操作,并在每个步骤中更新用户状态并考虑用户可以看到的下一个状态。