Django - 经过身份验证和未经身份验证的用户的CSRF令牌?

时间:2016-07-26 20:45:44

标签: django api token forms-authentication csrf

我想知道是否为 身份验证的用户和未经身份验证的用户自动生成了Django的CSRF令牌?我很好奇,因为我想创建一个用于发布表单数据的API,以便任何用户认证或未经身份验证的用户都能够对API端点进行调用。但我想知道是否必须将CSRF令牌“附加”到每个用户的标题中? (暗示未经身份验证的用户也会拥有CSRF令牌)

1 个答案:

答案 0 :(得分:0)

使用Django的默认身份验证机制时,经过身份验证和未经身份验证的用户都需要有效的CSRF令牌。用户登录时会旋转令牌。

您是否需要令牌并不是因为用户是否经过身份验证,而是依赖于身份验证机制。如果身份验证使用会话/ cookie来对用户进行身份验证,则攻击者可以使用随每个请求隐式发送的会话信息来伪造请求并执行受害者有权执行的某些操作。另一方面,如果您使用例如令牌身份验证,必须随每个请求显式发送令牌,攻击者无法知道令牌或伪造使用令牌的请求。