我一直和现在可能几乎每个使用Django Rest Framework创建REST API的Django Framework用户。我使用代码验证使用django-rest-framework-jwt,它在用户通过我们的其余API登录时返回令牌。如何在Django Rest Framework中注册和登录API?
所以问题是如何保护我们的API端点的任何注册或登录视图。任何高级别的XSS脚本都可能具有恶意循环来创建注册。我们如何在Django Rest Framework中保护它?
我一直和现在可能几乎每个使用Django Rest Framework创建REST API的Django Framework用户。我使用代码验证使用django-rest-framework-jwt,它在用户通过我们的其余API登录时返回令牌。如何在Django Rest Framework中注册和登录API?
所以问题是如何保护我们的API端点的任何注册或登录视图。任何高级别的XSS脚本都可能具有恶意循环来创建注册。我们如何在Django Rest Framework中保护它?
正如您所说的,您不能像JWT那样拥有一个身份验证系统来保护您的网页,如登录和注册。 但是还有很多其他的事情可以做。下面我已经简要介绍了其中的两个,以便让你开始并休息,以便详细研究。
一些浏览器来阻止似乎是一个XSS攻击内容的能力。他们通过在页面的GET或POST参数中查找JavaScript内容来工作。如果JavaScript在服务器的响应中重播,则该页面将无法呈现,而是显示错误页面。 X-XSS-Protection头用于控制XSS过滤器的操作。
实施
Django提供中间件和设置添加的设置> base.py 中间件:
django.middleware.security.SecurityMiddleware
设置:
SECURE_BROWSER_XSS_FILTER = True
This sets header to X-XSS-Protection: 1; mode=block
可以做,以防止一些其他的事情重复登录或注册页面的脚本是 -
安全问题
自动化程序可能攻击破解用户的用户名和密码或服务器慢下来。
这些攻击通常采取几种形式之一: 1.一个IP地址尝试一个用户名与许多密码。 2.许多IP地址尝试使用多个密码的用户名。 3.一个IP地址尝试使用几个通用密码的许多用户名。 4.许多IP地址尝试使用一个或几个通用密码的许多用户名。 5.攻击域上的任何随机url以降低服务器响应速度。
实施
Django的REST框架用于节流
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',
},
...
}
另一种解决方案提供了内置的设置是Django的后卫或Django的ratelimit用于防止仅针对失败的登录尝试。
希望它有帮助。
感谢您的提问。我也在寻找这个答案。 –
在应用程序级别执行此操作不是最佳解决方案。理想情况下,您应该使用类似fail2ban的东西来检测已知的攻击模式并在防火墙级别阻止它们。这种方式暴力尝试没有得到应用程序一旦检测到。 –
@MthetheDDaly是的,我查找了fail2ban。但目前的解决方案,我发现移动和后端开发人员可以共享一个密钥。所以在这些API中,移动应用会根据一些文本发送一些加密密钥,而后端开发人员可以使用相同的文本解密文本。 – Aniket