Django 保护用户注册视图

Django 保护用户注册视图,django,django-rest-framework,Django,Django Rest Framework,我有以下用户视图: class UserViewSet(ViewSet.ModelViewSet): serializer\u class=UserSerializer permission_classes=[NotSafeMethodandAllowny | permissions.IsAuthenticated] def get_queryset(自我): 如果self.request.user.is_superuser: 返回User.objects.all() 其他: 返回User.ob

我有以下用户视图:

class UserViewSet(ViewSet.ModelViewSet):
serializer\u class=UserSerializer
permission_classes=[NotSafeMethodandAllowny | permissions.IsAuthenticated]
def get_queryset(自我):
如果self.request.user.is_superuser:
返回User.objects.all()
其他:
返回User.objects.filter(id=self.request.User.id)
@操作(detail=False,methods=[“get”])
def当前(自身、请求、*args、**kwargs):
返回响应(self.get\u序列化程序(request.user.data)
由于这是一个
ModelViewSet
,它允许API用户创建、列出、更新和删除用户

不要介意
notsafemethod和allowany
权限

现在,我想以某种方式保护我的API,使其不受用户在脚本中使用它的影响。例如,当我在我的前端(一个单独的React应用程序)提交用户注册表单时,它应该被接受,但是如果有人使用随机注册数据(如来自Postman/curl/等)发布到我的
api/user/
,我希望它被丢弃

DRF是否有办法区分这两种类型的请求?可能通过一些设置,所以我可以在开发时通过Postman对其进行测试,但在生产中运行时,它不会接受自动请求。我想防止出现这样的情况:有人会在几分钟内创造出大量用户


顺便说一句:我使用JWT进行身份验证,但出于明显的原因,注册/登录端点不需要身份验证。

如果我理解,您可以创建一个,并且只允许来自特定IP地址的请求

from rest_framework import permissions

class IpAddressPermission(permissions.BasePermission):
"""
    Global permission check for IPs.
"""

def has_permission(self, request, view):

    remote_address = request.META['REMOTE_ADDR']
    if remote_addr == settings.ALLOWED_IP_ADDRESS:
        return True

    return False

这不是解决方案,因为我的应用程序的潜在用户会在不同的位置使用它。我不想限制用户的访问,我想限制机器人程序的访问-区分我的前端应用程序请求和来自命令行/工具的简单请求。但是你的前端应用程序有一个静态ip地址?允许的ip地址必须是前端ip地址,嗯,暂时不是,但是如果它不区分端口,我想你不能阻止来自Postman和其他类似开发工具的请求。现在,一些规范(如标题)可以帮助您确定它是否来自Postman(或任何其他工具),请参阅本文:这很好。但是人们可以使用curl,python,任何可能攻击我的网站的东西。除了节流/电子邮件验证之外,还有其他解决方案吗?您指的是哪种攻击?如果你安全地建立你的网站,而不是与Django的安全设置乱搞,这应该是很好的。如果您受到DDOS攻击或诸如此类的攻击,只需去找一家云提供商,它将为您提供保护。否则,使用节流、受保护视图等。。。。应该足够了。在这种情况下,唯一的解决方案是节流,然后通过电子邮件验证,但在这里,无论是通过浏览器还是通过邮递员,这都不会改变任何事情……没错,只是想确认一下。无法接受评论,但您已经回答了我的问题,谢谢!