了解 Django CSRF_COOKIE_SAMESITE 和 CSRF_TRUSTED_ORIGINS

2024-01-11

显然,我无法理解跨域环境中 Django (2.2.4) 设置对 CSRF 参数的影响。

正如我已经注意到的那样,我必须设置SESSION_COOKIE_SAMESITE = None如果我想将我的 Django 应用程序放入具有另一个域的网站的 iframe 中(例如 foo.com 上的 Django 应用程序和 bar.com 上的 iframe),以便在我的 Django 应用程序上发送表单。

但是 CSRF 参数又如何呢?经过一番试验后,我注意到如果我还设置了,我只能在 iframe 中发送 Django 表单CSRF_COOKIE_SAMESITE = None在 Django 设置中。

但什么是CSRF_TRUSTED_ORIGINS为了?如果我将 iframe 域(例如 bar.com)设置到列表中['bar.com']代替CSRF_COOKIE_SAMESITE = None我无法在 iframe 中的 Django 应用程序上发送表单。

谁能解释一下在什么情况下CSRF_TRUSTED_ORIGINS有什么影响吗?它只能在一个域和多个子域的环境中使用吗?

感谢您的任何提示!


简要地:CSRF_COOKIE_SAMESITE影响浏览器行为,同时CSRF_TRUSTED_ORIGINS影响 Django 的行为。您需要确保两者都设置正确。

The CSRF_COOKIE_SAMESITE https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-CSRF_COOKIE_SAMESITE设置只是决定什么SameSite https://owasp.org/www-community/SameSite指令(如果有)用于 CSRFSetCookie https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie。然后浏览器将使用该指令来确定是否在请求中包含 cookie。

The CSRF_TRUSTED_ORIGINS https://docs.djangoproject.com/en/dev/ref/settings/#csrf-trusted-origins设置允许您对 Django 严格检查的默认行为进行例外处理Host and Referer带有 CSRF 保护的传入请求的标头。看文档 https://docs.djangoproject.com/en/dev/ref/csrf/#how-it-works有关此检查的更多信息。

所以,当你没有设置时CSRF_COOKIE_SAMESITE to None,Django使用它的默认值'Lax',它指示浏览器不要通过不安全的请求跨域发送cookie(例如POST)。由于 cookie 没有发送,CSRF_TRUSTED_ORIGINS是无关紧要的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 Django CSRF_COOKIE_SAMESITE 和 CSRF_TRUSTED_ORIGINS 的相关文章

随机推荐

  • NodeJS 模块安装

    我正在尝试在无法访问互联网的计算机上安装 NodeJS 服务器 我复制了 exe 并执行了它 但现在我需要安装几个模块 所以我的问题是 我可以简单地从我的电脑复制模块吗 或者我必须将服务器连接到互联网并使用 npm 吗 编辑 我已经将所有必
  • Java集群中如何最好地进行文件锁定

    我有一个在 JBoss 上运行的服务器集群 我需要以安全的方式更新文件 具体来说 我需要 锁定文件 A 如果它已经被锁定 则以安全的方式阻塞 这样如果 JVM 突然死机 就不会出现悬空锁 30秒的超时就可以了 读取文件A 改变内容 将文件写
  • t 作为 R 中全局变量的名称:不可能吗?

    我想使用 t 作为 R 中全局变量的名称 但它不允许我这样做 sq1 function t lt lt 7 我收到以下错误 Error in sq1 cannot change value of locked binding for t 我
  • 接收信号的 QML 元素失效了?

    我有类似以下的代码 id myComponent signal updateState property variant modelList Repeater model modelList MyButton Connection targ
  • 3D 空间中向量的旋转和方向 - 逆序

    我在 3D 空间中有两个向量 S 开始 和T 目标 我想找到允许这种变换的旋转矩阵 RM 我知道通过计算叉积 S T我得到了旋转轴 之间的角度S and T是 谁 给的tan S T S T where S T is the 点积S 和 T
  • 使用libavcodec解码H264视频,C

    我正在尝试使用 ffmpeg libavcodec 解码原始 h264 文件 但无法使其正常工作 目前输出应该是原始 YUV 文件 可以用GCC编译代码 gcc o decoder decoder c L lib llibavcodec l
  • 如何使用java.sql.Date节省时间?

    目前 在我的代码中 我正在使用以下 setter 方法将当前日期和时间保存到数据库 但它只保存日期 而不保存时间 emp setJoiningDate new java sql Date System currentTimeMillis 方
  • 可以在 Folium 中绘制路径吗?

    我阅读了许多与此相关的文档 但找不到我想要的东西 我想绘制两点之间的步行路径 是否可以 如果没有 python 中是否有其他库用于此目的 当然可以 使用PolyLine https python visualization github i
  • 无法使用 Google 云存储和 Cloud Functions for Firebase 下载文件

    我遇到的问题与此相反 使用 Cloud Functions for Firebase 和 google cloud storage 删除图像时出现问题 https stackoverflow com questions 43178152 i
  • 有 C++11 CSPRNG 吗?

    众所周知 梅森扭转者加密上不安全 http www math sci hiroshima u ac jp m mat MT efaq html Mersenne Twister 不具有加密安全性 MT 是基于 线性递归 任何由 a 生成的伪
  • 更改默认值“{0} 字段为必填项”(最终解决方案?)

    再会 我有以下用于登录表单的 ViewModel 类 using System ComponentModel DataAnnotations public class UserLogin IDataErrorInfo Required Di
  • 使用 jquery 从 CDATA 和描述标签中获取图像

    如何从 CDATA 和描述标签中获取图像 下面是 XML 代码
  • JavaScript:document.getElementById() 返回 NULL

    我对 Javascript 还很陌生 但 document getElementById 遇到了一个问题 它总是返回 NULL 这让我抓狂 我的代码中有一个元素 我想获取它的坐标 以便可以移动它 这是代码
  • UIDevice currentDevice 模型可能值

    返回的所有可能值是多少 UIDevice currentDevice model 它不是有记录的 http developer apple com library ios documentation uikit reference UIDe
  • Telerik MVC Extensions Grid - 如何将网格过滤器应用于初始 LINQ 查询或传递到数据库?

    目前 在我的 MVC 网格中 我使用普通的服务器绑定 然后将过滤器作为查询字符串附加到 URL 此方法的问题是 如果我查询默认情况下有数千条记录的网格 但我只在网格的第一页 分页过滤器 上显示前 30 条记录 同样的事情也适用于姓氏的字符串
  • Servlet 中的参数化构造函数

    我可以在 servlet 中声明参数化构造函数吗 如果没有那么为什么 No Servlet 实例由容器通过反射创建 它们期望找到一个公共的 无参数的构造函数 默认构造函数 要配置 servlet 请使用 web xml 文件中指定的 ser
  • 具有多个数据库的 SSAS 立方体

    我有 3 个具有相同结构但数据不同的数据库 因为它们来自不同的客户端 现在 我有一个现有的 SSAS 项目 其数据源视图 多维数据集和维度只能使用或访问一个数据库 我想要的是能够使用具有相同结构的多个数据库 并使用它们创建一个多维数据集 每
  • 奇怪的指向成员函数的指针语法

    我了解如何声明函数的类型 typedef void typedef void f typedef void f is void using alias void f void alias void f is void 它可以用来声明函数指针
  • 在 JPA Criteria API 的子查询中使用 ORDER BY 的替代方法有哪些?

    考虑以下两个表 Project id project name Status id id project status name Where Status包含所有状态 其中Project已经是 假设我们要查询最新状态名称为 new 的所有项
  • 了解 Django CSRF_COOKIE_SAMESITE 和 CSRF_TRUSTED_ORIGINS

    显然 我无法理解跨域环境中 Django 2 2 4 设置对 CSRF 参数的影响 正如我已经注意到的那样 我必须设置SESSION COOKIE SAMESITE None如果我想将我的 Django 应用程序放入具有另一个域的网站的 i