首页 > 解决方案 > 如何为移动应用程序客户端的后端 django 使用 CSRF 安全性

问题描述

我正在为带有 Django 的移动应用程序开发一个后端,在用户注册中,用户数据是使用 POST 方法发送的。由于 Django 提供 CSRF 安全性作为中间件。这里我的问题是,如果我有一个前端,我可以通过 jinja 代码启用 CSRF 令牌,{% csrf_token %}但是因为它是一个后端以及如何解决这个问题

标签: djangobackendcsrf

解决方案


要防范这些类型的攻击,您需要做两件事: 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,那会更好


推荐阅读