我一直在搜索和阅读其他问题和博客,但我没有找到任何关于我的疑问的具体内容。
一点背景关系:
我正在开发一个 SPA,它通过 Django Rest Framework (DRF) 在 Django 中与 REST API 一起使用,并且身份验证是通过 Bearer 令牌:JWT(包“Simple JWT”)进行的。所以,我正在阅读它是否需要针对 CSRF 的保护:
?如果我使用不记名 JWT,是否需要 CSRF 令牌?
?我应该在 Rest API 端点上使用 CSRF 保护吗?
? Web API 身份验证指南,不记名令牌
基本上,如果浏览器不进行自动身份验证(使用会话或某种 cookie),CSRF 漏洞的可能性很小。这种方法是通过使用“授权”标头内的 JWT 的不记名令牌实作的。
更新:在这个开发阶段它被设定为 Django-CORS,但在生产中它将通过 Nginx 配置一个代理。避免 CORS 攻击。
问题:
有一些公共端点,不需要身份验证,所以我在 DRF 设定中使用了这个权限
这样,未经授权的用户只能发出安全请求 -methods: GET, HEAD和OPTIONS -。使用 JWT 的用户可以执行任何型别的请求。
由于修改应用程序的状态,登录和注册视图通过POST请求作业。问题是上述权限避免了“匿名”(以某种方式呼叫它)用户能够注册或登录。问题是,我该如何保护它们?
我想可能会将这些视图的权限更改为“AllowAny”。但是我不知道这是否回传了对CSRF的关注,因为这里没有Bearer token,或者可能是我无法想象的其他安全漏洞。
另一种可能性是仅在这些视图中使用 CSRF 令牌。
或者有没有更好的方法来保护这两个端点?
我希望有人能够帮助我!
uj5u.com热心网友回复:
您可以在登录和注册表单中使用 CSRF 令牌,这将充分保护您免受针对这些端点的 CSRF 攻击。然后,您显然必须允许匿名访问这些端点。登录和注册端点通常不在防火墻后面,匿名用户可以访问。
0 评论