11

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

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

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

人们通常如何将他们的 Django 服务器与 iOS 一起使用并进行此类 POST 调用?

谢谢!

4

2 回答 2

11

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

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

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

至于 CSRF 令牌,它们也被称为会话无关的随机数。它们应该是永久性的,但您可能知道这对于 cookie 是不可能的。无论如何,这意味着 CSRF cookie 通过会话持续存在。

于 2013-01-13T16:19:47.043 回答
2

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

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

于 2012-11-21T04:18:58.107 回答