drf 视图保护端点的良好节流速率限制是多少

问题描述 投票:0回答:1

我有两个基于 drf 类的视图端点,一个用于登录,一个用于密码重置 我想使用限制来防止对这两个端点的暴力相关攻击 我发现了很多讨论实施和限制类别的问题,但没有人讨论什么是保护端点的良好速率限制 那么实际使用的数字是多少?每秒或每分钟或每小时,用户不应该通过的实际速率是多少,否则被认为是非法的 该应用程序是一个类似社交媒体的应用程序

TLDR:一段时间内允许的请求数量是多少,以确保社交媒体应用程序的登录 api 端点不会被暴力破解

django rest django-rest-framework throttling brute-force
1个回答
0
投票

在我的项目中,我经常使用 APIView 基于类的视图来处理特定 HTTP 方法(如 GET、POST、PUT 或 DELETE)的自定义逻辑或复杂操作。另一方面,对于模型上的简单 CRUD(创建、检索、更新、删除)操作,我更喜欢使用 ModelViewSet。

以下示例演示了如何使用 APIView 进行自定义逻辑以及使用 ModelViewSet 进行 CRUD 操作:

APIView

from rest_framework import generics, status
from rest_framework.response import Response
from rest_framework.views import APIView
from .models import MyModel
from .serializers import MyModelSerializer

class MyCustomView(APIView):
    """
    A custom API view for handling specific operations.
    """

    def get(self, request):
        # Custom logic for GET method
        queryset = MyModel.objects.all()
        serializer = MyModelSerializer(queryset, many=True)
        return Response(serializer.data, status=status.HTTP_200_OK)

    def post(self, request):
        # Custom logic for POST method
        serializer = MyModelSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

使用 ModelViewSet 的示例:

from rest_framework import viewsets
from .models import MyModel
from .serializers import MyModelSerializer

class MyModelViewSet(viewsets.ModelViewSet):
    """
    A ModelViewSet for CRUD operations on MyModel.
    """
    queryset = MyModel.objects.all()
    serializer_class = MyModelSerializer

在此示例中,MyCustomView 扩展了 APIView 并定义了用于处理 GET 和 POST 请求的自定义逻辑。另一方面,MyModelViewSet 扩展了 ModelViewSet,它自动为 MyModel 模型提供 CRUD 操作(创建、检索、更新、删除)。

© www.soinside.com 2019 - 2024. All rights reserved.