django:是@csrf_exempt一个好主意吗?

问题描述:

我这是应该像一个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

这取决于您如何验证用户。 CSRF令牌可防止滥用用户或浏览器代理在每个请求上发送的信息,例如包含用户会话标识的Cookie。如果您不使用任何此类信息,则可以安全地使用@csrf_exempt