Django和iOS中的CSRF令牌

abi*_*son 11 django django-csrf ios tastypie ios6

所以我想知道在这里做什么...我正在从iOS调用我的Django服务器,并且我一直收到403错误(无效的CSRF令牌).我正在考虑实现一个函数,它将返回令牌(您需要登录才能访问该函数),然后将令牌添加到我的POST调用中.

现在......我不明白这样做有什么意义?如果我使用TastyPie并且所需的登录名是APIKey ...我应该免除csrf检查吗?

为了确保我理解正确...是每个用户会话生成的CSRF吗?因此,如果我不使用Cookie,CSRF是不是必要的?

人们通常如何在iOS上使用他们的Django服务器并进行此类POST调用?

谢谢!

Tei*_*man 11

您是对的:如果您不使用cookie来管理会话,则不需要CSRF保护.CSRF之所以有效,是因为会话cookie会自动附加到请求中; 访问令牌不是.

我个人认为这篇文章非常有用.这绝对值得一读,可能会回答你的很多问题.

至于tastypie:它允许SessionAuthentication.如果您允许在tastypie中进行会话身份验证,我建议您研究一种保护您的用户免受CSRF攻击的方法.对于其他认证方案,这似乎没有必要.据我所知,德米特里对于tastypie默认禁用CSRF是正确的,这意味着你得到403错误很奇怪.也许还有其他事情要发生.尝试将视图包装在@csrf_exempt中.

至于CSRF令牌,它们也被称为会话独立的nonce.它们是永久性的,但您可能知道cookie是不可能的.无论如何,这意味着CSRF cookie会在会话中持续存在.


Dmi*_*nko 2

你是对的,CSRF 在这种情况下没有多大意义,因为它的目的是保护用户在浏览器中免受数据篡改。

我相信 Tastypie 默认在其视图上禁用 CSRF。