我正在编写一个Django RESTful API来支持iOS应用程序,每当我编写处理POST请求的方法时,我都会遇到Django的CSRF保护.

我的理解是,iOS管理的cookie不被应用程序共享,这意味着我的会话cookie是安全的,任何其他应用程序都不能使用它们.这是真的吗?如果是这样,我可以只将我的所有API函数标记为CSRF豁免吗?

推荐答案

这不是CSRF保护的目的.CSRF保护是为了防止将数据直接发布到您的站点.换句话说,客户实际上必须通过批准的path投递,即查看表单页面、填写表单页面、提交数据.

API几乎排除了CSRF,因为它的全部目的通常是让allow个第三方实体访问和操作您站点上的数据(CSRF中的"跨站点").所以,是的,我认为作为一项规则,任何API视图都应该是CSRF豁免的.然而,您仍然遵循最佳实践,并通过某种形式的身份验证(如OAuth)来保护每个实际进行更改的API端点.

Django相关问答推荐

Django查询一个查询集的输入结果,以查找没有出现在另一个模型中的对象

源自访问外键关系的模型方法 get_absolute_url 的 django 重复 SQL 查询

如何删除django请求中的重复项

Django 获取用户创建的对象,这些用户属于用户列表

如何在 ModelViewSet 逻辑中读取查询字符串值?

在 GoDaddy 上安装 django 站点

如何使用 matplotlib 在绘图的角落插入小图像?

Django rest框架覆盖ViewSet中的page_size

如何获得用户权限?

将计数字段添加到 django rest 框架序列化程序

Django JSONField 过滤

django.request 记录器没有传播到根目录?

django - 如何在验证之前处理/清理字段

在基于类的通用视图 CreateView 中访问 request.user 以便在 Django 中设置 FK 字段

可以在 github 页面上托管 django 站点吗?

jinja2模板引擎中的这个-是做什么的?

__init__() 得到了一个意外的关键字参数user

django 管理列表中的外键显示

如何在 Django 中触发 500 错误?

Django 用户配置文件