2015-10-19 144 views
0

我這是應該像一個API工作端點:django:是@csrf_exempt一個好主意嗎?

/reset/<ID> 

這將通過AJAX調用/從一個單獨的客戶端(CORS問題已經解決)的角度。

現在,如果我剛發佈端點urls.py,我得到一個錯誤:

403 Forbidden 
CSRF verification failed. Request aborted. 

的原因是我清楚。

所以我調查了這個@csrf_exempt裝飾器。有了它,它可以工作......但是可以這樣做嗎? 請求沒有遵循請求 - 響應週期,客戶可能隨時發送此重置 - 所以我不知道如何發送X-CSRF-Token頭給客戶端...所以也許最終它是唯一的出路?

+1

您如何驗證客戶端? CSRF令牌可防止濫用用戶或瀏覽器代理在每個請求上發送的信息,例如包含用戶會話標識的Cookie。如果你不使用任何這樣的信息,你可以安全地使用'@ csrf_exempt'。 – knbk

+0

這將僅用於重置密碼,並附帶一個僅適用於一個tim的登錄代碼。因此,不可能有真正的身份驗證... ID應該是唯一的,不可猜測的....真正複製粘貼從其他解決方案... – faboolous

+0

@knbk如果你喜歡你可以提供你的評論作爲答案,我會接受它。您的評論實際上打開了我的眼睛,如何正確地做到這一點,這與csrf_exempt無關,但有一個適當的API :)謝謝。 – faboolous

回答

0

這取決於您如何驗證用戶。 CSRF令牌可防止濫用用戶或瀏覽器代理在每個請求上發送的信息,例如包含用戶會話標識的Cookie。如果您不使用任何此類信息,則可以安全地使用@csrf_exempt

相關問題