gpt4 book ai didi

javascript可以访问Django CSRF cookie吗?

转载 作者:行者123 更新时间:2023-12-03 23:30:59 24 4
gpt4 key购买 nike

在 Django 网站上,https://docs.djangoproject.com/en/dev/ref/contrib/csrf/它指出:

The CSRF protection is based on the following things:

1. A CSRF cookie that is set to a random value (a session independent nonce, as it is called), which other sites will not have access to.
2. ...

然后,它还说明可以通过 javascript 从 cookie 中获取 csrf token :
var csrftoken = $.cookie('csrftoken');

这两个说法不矛盾吗?假设有一个跨域攻击,那么攻击者可以从cookie中获取CSRF token ,然后在 header 中使用CSRF token 进行POST请求?有人可以解释一下吗?

更新

我现在意识到,只有来自同一来源的 javascript 才被允许访问 cookie。一个后续问题是:

如果 POST 请求自动将 cookie 作为请求的一部分添加,并且 django 的 csrf cookie 值与 csrf token 相同,那么恶意跨源请求仍然具有正确的 CSRF token ? (在 cookies 中)

最佳答案

从名称 CSRF (Cross Site Request Forgery) 中,您已经可以猜测攻击者必须执行来自“跨站点”(其他站点)的请求。

"The key to understanding CSRF attacks is to recognize that websites typically don't verify that a request came from an authorized user. Instead they verify only that the request came from the browser of an authorized user." - quoted here



所以对于不防CSRF攻击的网站,攻击者可以从任何地方发送恶意请求:浏览器、电子邮件、终端……由于网站不检查请求的来源,它认为是授权用户发出的要求。

在这种情况下,在每个 Django 表单中,您都有一个名为“CSRF token ”的隐藏输入。该值是在表单呈现时随机且唯一生成的,并将在发出请求后进行比较。所以请求只能从授权用户的浏览器发送。攻击者无法(据我所知)获取此 token 并执行 Django 后端可以接受的恶意请求。

够清楚吗?

关于javascript可以访问Django CSRF cookie吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17958178/

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