拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 如何保护使用JWT作为身份验证的DRF创建的API的CSRF登录和注册端点(视图)?

如何保护使用JWT作为身份验证的DRF创建的API的CSRF登录和注册端点(视图)?

白鹭 - 2022-03-15 2150 0 0

我一直在搜索和阅读其他问题和博客,但我没有找到任何关于我的疑问的具体内容。

一点背景关系:

我正在开发一个 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, HEADOPTIONS -。使用 JWT 的用户可以执行任何型别的请求。

由于修改应用程序的状态,登录和注册视图通过POST请求作业问题是上述权限避免了“匿名”(以某种方式呼叫它)用户能够注册或登录。问题是,我该如何保护它们?

我想可能会将这些视图的权限更改为“AllowAny”。但是我不知道这是否回传了对CSRF的关注,因为这里没有Bearer token,或者可能是我无法想象的其他安全漏洞。

另一种可能性是仅在这些视图中使用 CSRF 令牌。

或者有没有更好的方法来保护这两个端点?

我希望有人能够帮助我!

uj5u.com热心网友回复:

您可以在登录和注册表单中使用 CSRF 令牌,这将充分保护您免受针对这些端点的 CSRF 攻击。然后,您显然必须允许匿名访问这些端点。登录和注册端点通常不在防火墻后面,匿名用户可以访问。

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *