gpt4 book ai didi

python - Django:在所有响应中强制使用 CSRF token

转载 作者:太空狗 更新时间:2023-10-29 18:09:23 35 4
gpt4 key购买 nike

我的网站有一个 AJAX POST View ,可以从应用程序的任何页面调用(事件跟踪)。此 View 受 CSRF 保护。在某些情况下,CSRF cookie 未设置,POST 调用失败。

不是用@ensure_csrf_cookie 手动装饰所有 View , 我正在考虑编写 我创建了一个中间件,强制 Django 在所有响应上设置 CSRF cookie。这种方法正确吗?它会产生我不知道的安全漏洞吗?

更新:中间件代码如下:

from django.middleware.csrf import get_token

class ForceCsrfCookieMiddleware(object):
def process_request(self, request):
get_token(request)

最佳答案

不,只要您不在发布到外部站点的表单中呈现 csrf token ,就没有问题(但这无论如何都会成为一个问题,无论您在哪里实现它)。你可以设置在一个中间件上,或者一些 View 上,或者所有 View 上,都没有关系。

CSRF 保护只是为了确保请求来自您的站点。无论您设置 cookie 的频率如何,如果请求包含正确的 CSRF token ,则意味着该请求确实来自您的站点,因为只有您的站点才能访问您的 cookie。 (当然,这只有在您没有将 CSRF token 泄露给第三方的情况下才成立,例如通过将其发送到其他站点)

简而言之,它是这样工作的:

  1. 服务器在响应中设置一个带有随机值的cookie
  2. 您的网站读取该值并在发布数据时将其发送到服务器
  3. 由于只能从设置它们的同一域访问 cookie,因此其他站点无法读取该 cookie。因此,无论何时您收到具有正确 csrf token 的请求,您都可以确信该请求来自您的站点。

有关 CSRF 的很好的解释,请查看这篇文章:http://www.gnucitizen.org/blog/csrf-demystified/

关于python - Django:在所有响应中强制使用 CSRF token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32231607/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com