我一直在搜索和閱讀其他問題和博客,但我沒有找到任何關于我的疑問的具體內容。
一點背景關系:
我正在開發一個 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 設定中使用了這個權限
'DEFAULT_PERMISSION_CLASSES':['rest_framework.permissions.IsAuthenticatedOrReadOnly'],
這樣,未經授權的用戶只能發出安全請求 -methods: GET, HEAD和OPTIONS -。使用 JWT 的用戶可以執行任何型別的請求。
由于修改應用程式的狀態,登錄和注冊視圖通過POST請求作業。問題是上述權限避免了“匿名”(以某種方式呼叫它)用戶能夠注冊或登錄。問題是,我該如何保護它們?
我想可能會將這些視圖的權限更改為“AllowAny”。但是我不知道這是否回傳了對CSRF的關注,因為這里沒有Bearer token,或者可能是我無法想象的其他安全漏洞。
另一種可能性是僅在這些視圖中使用 CSRF 令牌。
或者有沒有更好的方法來保護這兩個端點?
我希望有人能夠幫助我!
uj5u.com熱心網友回復:
您可以在登錄和注冊表單中使用 CSRF 令牌,這將充分保護您免受針對這些端點的 CSRF 攻擊。然后,您顯然必須允許匿名訪問這些端點。登錄和注冊端點通常不在防火墻后面,匿名用戶可以訪問。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/399832.html
