django csrfMiddleware的一些理解跨站和跨域

news2024/11/29 3:53:13

术语

术语解释备注
跨域两个 URL 的“协议+主机名+端口”3者只要有一个不一致http://www.taobao.com/和https://www.taobao.com/
跨站两个 URL 的 eTLD+1 不相同a.github.io 和 b.github.io
eTLDeffective top level domain (有效顶级域名).com、.co.uk、.github.io
eTLD+1有效顶级域名+二级域名taobao.com
  1. 有效顶级域名,注册于 Mozilla 维护的公共后缀列表(Public Suffix List)中 https://publicsuffix.org/list/public_suffix_list.dat
  2. a.taobao.com和 www.b.taobao.com 是同站,a.github.io 和 b.github.io 是跨站,github.io 在公共后缀列表里,但 taobao.com 不在公共后缀列表里

为什么要有同源策略

同源策略:

浏览器的同源策略是为了限制CSRF攻击,因为我们有些场景确实需要,访问不同域名下的资源,所以需要跨域。

同源策略(Same Origin Policy)是一种约定,它是浏览器最核心最基本的安全功能。所谓的同源是指域名、协议、端口相同。不同源的客户端脚本在没有明确授权的情况下是不允许读写其他网站的资源

如在www.baidu.com的网页下 去访问www.taobao.com 这样则形成了跨域 那么浏览器则会限制响应数据(注意 这里是指限制访问响应的数据 而不是限制访问),也就是拿不到响应的数据,csdn.net域下的页面脚本文件无法拿到baidu.com下的cookies信息

同源策略的限制:

  1. Cookie、LocalStorage 和 IndexDB 会话存储无法读取。
  2. DOM 无法获得。
  3. AJAX 请求不能发送。

同源策略作用:

防止恶意网页可以获取其他网站的本地数据。

防止恶意网站iframe其他网站的时候,获取数据。

防止恶意网站在自已网站有访问其他网站的权利,以免通过cookie免登,拿到数据。

为什么能防csrf

  1. 上文提到不同源无法对cookie里面的数据进行操作访问,为了防止csrf攻击可以让前端把cookie中写入的token放到请求头中每次请求都带过来,然后服务端再对请求头里面的token进行校验。
  2. 因为不同源钓鱼网站拿不到支付宝的cookie里的信息那么钓鱼网站自然不能在请求头上加token这样也很完美的解决了csrf攻击!

csrf攻击的特点

  1. 请求是跨域的,可以看出请求是从恶意网站上发出的
  2. 通过 img, script 等标签来发起一个 GET 请求,因为这些标签不受同源策略的限制
  3. 发出的请求是身份认证后的

Django中csrf token验证原理

问题引入

在这里插入图片描述

解答

  1. django 第一次响应来自某个客户端的请求时,会在服务器端随机生成一个 token,把这个 token 放在 cookie 里。然后每次 POST 请求都会带上这个 token,这样就能避免被 CSRF 攻击。

  2. 官方文档中说到,检验token时,只比较secret是否和cookie中的secret值一样,而不是比较整个token。oken字符串的前32位是salt, 后面是加密后的token, 通过salt能解密出唯一的secret。django会验证表单中的token和cookie中token是否能解出同样的secret,secret一样则本次请求合法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/3466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第六节:数组的定义与使用【java】

目录 📃1. 数组的基本概念 1.1 为什么要使用数组 1.2 什么是数组 1.3 数组的创建及初始化 1.4 数组的使用 🎒2. 数组是引用类型 2.1 初始JVM的内存分布 2.2 基本类型变量与引用类型变量的区别 2.3 认识 null 2.4 再谈引用变量 📖3. …

Redis的RDB持久化配置以及数据恢复

文章目录Redis的RDB持久化配置以及数据恢复配置RDB持久化机制RDB持久化机制的工作流程基于RDB持久化机制的数据恢复Redis的RDB持久化配置以及数据恢复 配置RDB持久化机制 在 redis 的配置文件中找到如下内容: 以 save 60 10000 为例,表示每隔 60s&…

Springboot 整合与文件配置

哈喽~大家好,这篇看看Springboot 整合与文件配置。 🥇个人主页:个人主页 🥈 系列专栏:【Java框架】 🥉与这篇相关的文章: 【JAVAEE框架】MyBatis与Spring的整合&#xff0…

Unity-huatuo热更新调研

文章目录1. 相关资料2. 环境准备2.1 项目和编辑器版本2.2 安装huatuo插件2.3 在build settings里面勾选Export Project2.4 导出Android studio工程3. 验证热更新3.1 更改读取目录3.2 运行android apk3.3 热更新1. 相关资料 bilibili视频:https://www.bilibili.com/…

学院打卡第十四天

今天是一道困难题,难得有困难题!! 如题: 但是这个困难题感觉也不是很”困难“!!! 算法思想: 第一感觉就是利用栈的思想,这种题做多了,一看见就是想到栈&…

2021年上半年软件设计师下午真题及答案解析(三)

阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某中医医院拟开发一套线上抓药APP,允许患者凭借该医院医生开具的处方线上抓药,并提供免费送药上门服务。该系统的主要功能描述如下: &#…

Kotlin编程实战——概述(01)

一 概述 Kotlin用于服务器开发Kotlin 进行 Android 开发Kotlin 用于 JavaScript 开发Kotlin 用于原生开发Kotlin 用于数据科学协程多平台 二 Kotlin用于服务器开发 2.1 原因 表现力可伸缩性互操作性迁移迁移工具学习曲线 2.2 Kotlin 进行服务器端开发的框架 Spring、Vert.…

Premiere 出现“该级别的帧大小/帧速率无效。请减小视频范围或帧速率,或者增加配置文件和级别,然后重试”的解决办法

有时候我们需要制作一定纵横比的视频,比如设置画面大小为1080(水平)1920(垂直)的竖屏尺寸,但是最近我导出视频时发现了 “该级别的帧大小/帧速率无效。请减小视频范围或帧速率,或者增加配置文件和级别,然后重试” 这个问题&#x…

使用插值法公式组成数字电路进行计算的计算机

使用插值法公式组成数字电路进行计算的计算机 使用插值法公式组成数字电路进行计算的计算机是一种可以使用插值法计算积分值,导数值,函数值的数字计算机,它由按键,液晶显示器,中央处理器组成。按键输入的程序保存在磁带…

【CUDA编程】CUDA内存模型

文章目录1. 内存结构2. GPU device内存2.1 寄存器(Registers)2.2 本地内存(Local Memory)2.3 共享内存(Shared Memory)2.4 常量内存(Constant Memory)2.5 纹理内存(Texture Memory)2.6 全局内存(Global Memory)3. CPU Host内存1. 内存结构 在CUDA中可编程内存的类型有&#xf…

文件管理的功能

文章目录什么是文件文件的属性文件内部的数据如何组织起来文件之间应该如何组织起来操作系统应该向上提供哪些功能从上往下看,文件应该如何存放在外存其他需要由操作系统实现的文件管理功能什么是文件 文件就是一组有意义的信息/数据集合 文件的属性 文件名&#x…

万字手撕AVL树 | 上百行的旋转你真的会了吗?【超用心超详细图文解释 | 一篇学会AVL】

说在前面 今天这篇博客,是博主今年以来最最用心的一篇博客。我们也很久没有更新数据结构系列了,几个月前博主用心深入的学习了这颗二叉平衡搜索树,博主被它的查找效率深深吸引。 AVL树出自1962年中的一篇论文《An_algorithm_for_the_organi…

计算机毕业设计(附源码)python职业高中智慧教学系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

ASCII纯文本绘制流程图

我们使用纯文本写代码,有了Markdown又可以使用纯文本写文档,那么图片,能不能使用纯文本描述呢? Text Flow是什么? Text Flow:一个强大的在线ASCII流程图绘制工具,是程序员大佬们很喜爱的制作流…

【AI绘图】咒术师的评级指南

成为咒术师之路 python版本要选用3.9.7 C盘或系统缓存目录预留5G空间 咒术师评级 以下内容仅供参考。。 三级咒术师 理解咒言的使用,正向咒言,逆向咒言,构图要素的表达 二级咒术师 能够对咒物做后期调整,校正手部 一级咒术师…

Redis

1.概念:redis是一款高性能的NOSQL系列的非关系型数据库 关系型数据库:数据之间有关联关系,数据存储在硬盘的文件上 非关系型数据库:数据之间没有关联关系,数据存储在内存中 是一款用C语言开发…

猿创征文|一文吃透JAVA初学者的开发工具

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:乐趣国学的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:CSDN活动专…

【算法】网络最大流问题,三次尝试以失败告终

文章目录开始基本思路:“反悔”机制干活尝试一:深度优先搜索尝试二:少走弯路尝试三:最短增广路径,广度优先还是没ac记两个小bug1. 数组越界2. 写错变量名小结最后一个版本的代码(C)定义类与函数…

谷雨妹子要出国

文 / 谷雨(微信公众号:王不留) 作为出差在外的实施团队中的唯一一位女生,我可以独享一个单间,晚上的备考时候不会受影响,心里倒有点美嗞嗞的。 目前工作状态是 996(早上九点到晚上九点&#xf…

常用短信平台一览,记得收藏哦

市面上的短信平台很杂很多,小到几个人的公司、大到腾讯、阿里这样的巨无霸都在做,但常用的就那么几个,因而用户的选择也存在不少的困惑。 在我看来,我觉得选择短信平台、在我看来有这几个需要的注意地方: 1、价格 无论…