如何在Django Rest Framework中保护注册和登录API?

Ani*_*war 9 python api django rest django-rest-framework

我一直和现在几乎每个Django Framework用户都使用Django Rest Framework来创建REST API.我正在使用它使用django-rest-framework-jwt进行令牌认证,并在用户通过我们的其余API登录时返回令牌.

所以问题是如何保护我们的API端点的任何注册或登录视图.任何高级XSS脚本都可能有恶意循环来创建注册.我们如何在Django Rest Framework中保护它?

Ank*_*rma 6

正如您所说,您不能拥有像JWT这样的身份验证系统来保护您的网页,例如登录和注册.但是,您还可以做很多其他事情.下面我简要提到其中两个,让你开始休息,你可以详细研究.

  • 首先解决XSS问题 -

某些浏览器能够阻止似乎是XSS攻击的内容.他们通过在页面的GET或POST参数中查找JavaScript内容来工作.如果在服务器的响应中重放了JavaScript,则会阻止页面呈现,并显示错误页面.X-XSS-Protection标头用于控制XSS过滤器的操作.

履行

Django提供了在settings> base.py中间件中添加的中间件和设置:

django.middleware.security.SecurityMiddleware
Run Code Online (Sandbox Code Playgroud)

设置:

SECURE_BROWSER_XSS_FILTER = True
This sets header to X-XSS-Protection: 1; mode=block
Run Code Online (Sandbox Code Playgroud)

您可以采取其他措施防止某些脚本反复登录您的登录页面或注册页面 -

  • 蛮力攻击

安全问题

自动程序可能会攻击以破解用户的用户名和密码或减慢服务器的速度.

这些攻击通常采用以下几种形式之一:1.一个IP地址尝试使用多个密码的用户名.2.许多IP地址尝试使用多个密码的用户名.3.一个IP地址尝试使用一些常用密码的许多用户名.4.许多IP地址尝试使用一个或几个通用密码的许多用户名.5.攻击域上的任何随机URL以减慢服务器响应.

履行

Django Rest Framework提供了内置的限制设置

REST_FRAMEWORK = {
    ...
    'DEFAULT_THROTTLE_CLASSES': (
        'rest_framework.throttling.AnonRateThrottle',
        'rest_framework.throttling.UserRateThrottle',
        'rest_framework.throttling.ScopedRateThrottle',
    ),
    'DEFAULT_THROTTLE_RATES': {
        'anon': '60/minute',
        'app1': '10000/day',
        'app2': '10000/day',
    },
    ...
}
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是django-defender或django-ratelimit,仅用于防止失败的登录尝试.

希望能帮助到你.