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
头给客户端...所以也许最终它是唯一的出路?
答
这取决于您如何验证用户。 CSRF令牌可防止滥用用户或浏览器代理在每个请求上发送的信息,例如包含用户会话标识的Cookie。如果您不使用任何此类信息,则可以安全地使用@csrf_exempt
。
您如何验证客户端? CSRF令牌可防止滥用用户或浏览器代理在每个请求上发送的信息,例如包含用户会话标识的Cookie。如果你不使用任何这样的信息,你可以安全地使用'@ csrf_exempt'。 – knbk
这将仅用于重置密码,并附带一个仅适用于一个tim的登录代码。因此,不可能有真正的身份验证... ID应该是唯一的,不可猜测的....真正复制粘贴从其他解决方案... – faboolous
@knbk如果你喜欢你可以提供你的评论作为答案,我会接受它。您的评论实际上打开了我的眼睛,如何正确地做到这一点,这与csrf_exempt无关,但有一个适当的API :)谢谢。 – faboolous