django - 如何为移动应用程序客户端的后端 django 使用 CSRF 安全性
问题描述
我正在为带有 Django 的移动应用程序开发一个后端,在用户注册中,用户数据是使用 POST 方法发送的。由于 Django 提供 CSRF 安全性作为中间件。这里我的问题是,如果我有一个前端,我可以通过 jinja 代码启用 CSRF 令牌,{% csrf_token %}
但是因为它是一个后端以及如何解决这个问题
解决方案
要防范这些类型的攻击,您需要做两件事: 1 确保“安全”HTTP 操作,例如 GET、HEAD 和 OPTIONS 不能用于更改任何服务器端状态。2 确保任何“不安全”的 HTTP 操作,例如 POST、PUT、PATCH 和 DELETE,始终需要有效的 CSRF 令牌。如果您使用 SessionAuthentication,则需要为任何 POST、PUT、PATCH 或 DELETE 操作包含有效的 CSRF 令牌。为了发出 AJAX 请求,您需要在 HTTP 标头中包含 CSRF 令牌,如 Django 文档中所述。
检查此链接。它准确地解释了你的方法应该是什么。
基本上,如果您希望 POST 请求具有 csrf,则需要在标头中发送 csrf 令牌。但我们不会为未经身份验证的请求请求 csrf 令牌。
如果您还没有使用 Django Rest Framework 来创建 API,那会更好
推荐阅读
- javascript - 使用带有沙盒允许弹出属性的 iframe 时如何自动弹出窗口?
- html - 如何验证打字稿中输入标记的类型“target.dataset”属性
- c# - 如何在 c# 的 for each 循环期间发布事件?
- c++ - 有没有办法在来自不同标题的函数之间指向变量?
- sql - 案例表达有问题
- java - 转换地图
> 到地图 > 在 Java 1.8 中 - database - 如何链接 Google 表单以响应现有的 Google 表格?
- python - 对 Pandas Dataframe 中的组合进行并行化/矢量化计算
- javascript - 如何滚动到第一个子 div,而不是一个接一个地滚动到所有目标子 div?
- mysql - 为什么 select count(*) from table_name 这么慢?