我正在编写一个 Django RESTful API 来支持一个 iOS 应用程序,每当我编写处理 POST 请求的方法时,我都会遇到 Django 的 CSRF 保护。
我的理解是 iOS 管理的 cookie 不会被应用程序共享,这意味着我的 session cookie 是安全的,没有其他应用程序可以利用它们。这是真的?如果是这样,我可以将所有 API 函数标记为 CSRF-exempt 吗?
最佳答案
这不是 CSRF 保护的目的。 CSRF 保护是为了防止将数据直接发布到您的站点。换句话说,客户端实际上必须通过批准的路径发布,即查看表单页面,填写它,提交数据。
API 几乎排除了 CSRF,因为它的整个目的通常是允许 3rd 方实体访问和操作您站点上的数据(CSRF 中的“跨站点”)。所以,是的,我认为作为规则,任何 API View 都应该是 CSRF 豁免的。但是,您仍应遵循最佳实践,并通过某种形式的身份验证(例如 OAuth)保护实际进行更改的每个 API 端点。
关于python - CSRF 攻击是否适用于 API?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10741339/