【发布时间】:2013-07-31 06:11:56
【问题描述】:
在 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令牌:
var csrftoken = $.cookie('csrftoken');
这两种说法不冲突吗?假设有Cross Origin攻击,那么攻击者可以从cookie中获取CSRF token,然后在header中使用CSRF token进行POST请求?有人可以解释一下吗?
更新
我现在意识到,只有来自同一来源的 javascript 才被允许访问 cookie。一个后续问题是:
如果 POST 请求自动添加 cookie 作为请求的一部分,并且 django 的 csrf cookie 值与 csrf token 相同,那么恶意跨源请求仍然会有正确的 CSRF token 吗? (在 cookie 中)
【问题讨论】:
标签: django django-csrf