CORS漏洞原理分析

2023-11-16

CORS跨域漏洞原理分析

CORS全称为Cross-Origin Resource Sharing即跨域资源共享,用于绕过SOP(同源策略)来实现跨域资源访问的一种技术。而CORS漏洞则是利用CORS技术窃取用户敏感数据。以往与CORS漏洞类似的JSONP劫持虽然已经出现了很多年,但由于部分厂商对此不够重视导致其仍在不断发展和扩散。

在这里插入图片描述
美创安全实验室近期监控到全国各地类似于JSONP劫持或CORS漏洞引发的CSRF防御崩溃案例不断增多故在此单独出一篇针对CORS漏洞原理及防御方法的文章,希望看官们好好保护自己的系统免受此种攻击威胁。

0x01 CORS及SOP简介

对CORS的介绍要从浏览器的同源策略开始说起,SOP全称为Same Origin Policy即同源策略,该策略是浏览器的一个安全基石,同源策略规定:不同域的客户端脚本在没有明确授权的情况下,不能读写对方的资源。简单来说同源策略就是浏览器会阻止一个源与另一个源的资源交互。可以试想一下,如果没有同源策略,当你访问一个正常网站的时候又无意间打开了另一个恶意网站,恶意网站会从你刚刚访问的正常网站上窃取你全部的信息。

SOP是一个很好的策略,在SOP被提出的时期,大家都默默地遵守着这个规定,但随着WEB应用的发展,有些网站由于自身业务的需求,需要实现一些跨域的功能能够让不同域的页面之间能够相互访问各自页面的内容。为了实现这个跨域需求,聪明的程序员想到了一种编码技术JSONP,该技术利用从客户端传入的json格式的返回值,在服务器段调用该接口处事先以定义函数的方式定义好json格式里参数值,并加载script标签调用该函数实现跨域。由此可见JSONP虽然好但他并非是在协议层面解决跨域问题,所以出现了很多安全问题。为了能更安全的进行跨域资源访问,CORS诞生了。

CORS是H5提供的一种机制,WEB应用程序可以通过在HTTP报文中增加特定字段来告诉浏览器,哪些不同来源的服务器是有权访问本站资源。

0x02 CORS跨域原理及漏洞成因

浏览器将CORS请求分成两类:简单请求(simple request)和非简单请求(not-so-simple request)。只要同时满足以下两个条件就属于简单请求否则属于非简单请求,①请求方法是(HEAD,GET,POST)三种之一;②HTTP的头信息不超出(Accept,Accept-Language,Content-Language,Lat-Event-ID,Content-Type)这几种字段。

对于简单请求,大致流程是浏览器发现这一次向服务器提交的请求是简单请求,所以自动在头信息中增加了一个Origin的字段,用来表示这次的请求来自哪个域。当服务器接收到请求后发现Origin字段指定的域名在许可范围内,服务器会在响应包中增加三个与CORS相关的字段,Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Access-Control-Expose-Headers。其中Acce

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

CORS漏洞原理分析 的相关文章

  • Spring Boot中ApplicationRunner与CommandLineRunner

    在实际的开发场景中 经常需要在运行环境之前执行一些类似于读取配置文件 数据库连接操作等 Spring Boot提供了ApplicationRunner和CommandLineRunner来帮助我们实现这些需求 时机 他们执行的时机是为容器启
  • 搜索引擎批量查询控制脚本

    seo的工作需要我们会经常查询gg和百度的结果 收录也好排名也好 所以在做查询脚本时一定要控制查询时间来防止百度封锁禁止你的查询 当然有两种方法 1 不断变换代理 当然代价较大 2 控制查询请求的间隔 3 前两者结合使用 一般的脚本我们从性
  • 利用 MLP(多层感知器)和 RBF(径向基函数)神经网络解决的近似和分类示例问题(Matlab代码实现)

    个人主页 研学社的博客 欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 1 径向基神经网络
  • weixin支付

    前端
  • vue如何通过配置proxy解决跨域问题

    原本在用axios做数据请求的时候我就打算用CORS解决跨域问题 奈何跟我做配合的后端成员用natapp做内网穿透给到的数据接口没有在服务器做CORS跨域需要的相关请求头配置 那这个时候就只能在前端解决跨域问题 在vue中配置代理proxy
  • kdj超卖_今天给大家分享一个(KDJ指标买卖技术)附图解

    KDJ指标买卖技术 KDJ是一个超买超卖指标 对股价高位低位的研判 根据KDJ的取值 我们将KDJ区域分为 1 超买区 K D J这三值在20以下为超卖区 是买入信号 2 超卖区 K D J这三值在80以上为超买区 是卖出信号 3 徘徊区
  • jdbc连接mysql8驱动详解

    当使用 mysql connector java 8 以上版本时 会出现很多问题 下面将给出一些解决方案 jdbc连接通用配置 1 JDBC driver 由 com mysql jdbc Driver 改为 com mysql cj jd
  • pytorch安装包

    https pan baidu com s 1R67Sq7V Pa33oVWRt1iOpQ
  • PostCSS的配置文件

    Vue中使用Vant组件库时 需要使用rem单位 使用了以下两个工具 postcss pxtorem 是一款 postcss 插件 用于将单位转化为 rem lib flexible 用于设置 rem 基准值 在使用PostCSS 时 提供
  • 区块链在供应链领域的应用案例

    案例一 布比物链构建基于区块链的有品质保证且诚信公证的供应链系统 面对众多供应链领域存在的问题 布比基于区块链技术构建了物链 物链充分利用区块链高可信共识 低成本安全 分布式账本和高效链接多中心的特点 整合先进的物联网技术 推出了 品质驱动
  • 环境—虚拟机Ubuntu18的VScode出现XHR:timeout

    解决 Error while fetching extensions XHR timeout VScode改代理 本台虚拟机 测试无效 windows下改host 本台虚拟机 测试无效 windows下改时区服务器 本台虚拟机 测试有效 D
  • 弱口令漏洞与验证码绕过——渗透day04

    目录 一 基于远程服务的弱口令攻击 一 服务暴力破解软件 二 实验 二 基于web的弱口令测试 一 基于表单的暴力破解 二 验证码绕过 on client 1 通过Script Blocker Ultimate插件绕过验证码 2 通过bur
  • Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

    看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程 不会的话可以查看本篇博客 总结 QT 多线程 处理密集时的界面响应保持 运用 MultMoveToThread testObject new MultM
  • 记一次mysql进程无法启动的解决方案

    莫名其妙数据库崩了 试了很多方案启动不了 然后不经意看到 usr local mysql data目录下几个日志文件特别大 删除之后就能重启了 rw rw 1 mysql mysql 4497955 Mar 3 18 29 xxxx php
  • 【Unity Optimize】使用图集(Sprite Atlas)优化项目

    目录 1 图集 Sprite Atlas 介绍 2 创建与配置Sprite Atlas 2 1 创建Sprite Atlas 2 1 1 Unity2D项目 2 1 2 Unity3D项目 2 2 配置Sprite Atlas 2 3 注意
  • PLC接线详解

    PLC常见的输入设备有按钮 行程开关 接近开关 转换开关 拨码器 各种传感器等 输出设备有继电器 接触器 电磁阀等 想学好电气 必须先学会接线 如果线都接不好的话 设备出现问题时 依然是无从下手 正确地连接输入和输出线路 是保证PLC可靠工
  • 射频电路学习之LC振荡电路

    文章目录 前言 一 串联谐振电路 二 并联谐振电路 三 谐振电路的本质 总结 前言 谐振是指 当外力作用的频率与系统固有的振荡频率相同或非常接近时 振幅急剧增大的现象 其中产生谐振时的频率成为谐振频率 谐振是正弦电路中的一种特殊现象 回路也
  • IBM DISK queue_depth参数调整

    queue depth参数会影响disk i o性能 特别是在数据库等i o密集性应用中 适当调整设置此参数 会提高整体应用的性能 下面是在AIX 5 3 IBM ds4300上调整此参数的 步骤及注意事项 记录一下 下面物理磁盘hdisk
  • Windows 11 提升软件打开速度

    设置 gt 辅助功能 gt 视觉效果 gt 动画效果 关闭 设置 gt 辅助功能 gt 视觉效果 gt 透明效果 关闭 设置 gt 应用 gt 启动 都关闭

随机推荐

  • 08-wait 和 sleep 的区别

    1 源码 sleep public class Thread implements Runnable public static native void sleep long var0 throws InterruptedException
  • Qt实现图像自适应窗口大小之scaled()函数使用

    很多应用都需要显示图片 比如视频类应用 拍照类应用 但是在大数情况下用户都会改变窗口大小 以获得最佳效果 在Qt中如果只设置了显示图片而没有对自适应窗口做出设置 用户拖拽边框的时候 整个控件上就会出现大片空白部分 怎么解决这个问题呢 QIm
  • Python基础(四):Python函数和模块的讲解和应用

    一 前言 山东省小学已将Python内容纳入教材 江省已将信息技术教材VB编程语言替换为Python 计算机二级考试加入 Python语言程序设计 科目 越来越多的岗位也需要Python技能 Python连续4年成功登顶最流行的编程语言榜单
  • Git安装以及基本配置

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 提示 以下是本篇文章正文内容 下面案例可供参考 一 Git安装以及配置 git官网 https git scm com downloads 选择适合的版本进入下载 然后傻瓜式
  • 两个数组去重!

    var a1 1 2 3 4 5 var b1 1 2 var c1 a1 filter a gt return b1 some c gt c a 两个数组可快速对比去重
  • crontab日志包命令找不到和乱码问题

    crontab设置的定时任务 执行脚本报错命令找不到和乱码 使用crontab时的运行环境已经不是用户环境了 因此原本用户下的一些环境变量的设 置就失效了 因为我的命令path设置到了 etc profile里了 所以在crontab运行不
  • 【Flutter 1-8】Flutter教程Dart语言——控制语句

    控制语句 Dart语言的控制语句跟其他常见语言的控制语句是一样的 基本如下 if 和 else for 循环 while 和 do while 循环 break 和 continue switch 和 case assert If 和 El
  • centos 6.6 编译安装PHP7.0.5

    PHP7 0正式版也出来了 今天编译安装了一下 写下安装步骤 我是在centos6 6 环境中编译的 如下 下载地址http cn2 php net distributions php 7 0 5 tar gz 安装编译所需的包 如遇见部分
  • ListView 的position不正确的时如何处理

    当给ListView加了一个HeaderView后 代码如下 我们发现 onItemClick方法里的position参数的值不是我们所期望的 比如点击ListView的第一行 我们期望的position是0 可是实际上却是1 也就是说 它
  • OAuth2实现单点登录SSO完整教程,其实不难!

    点击上方 Java基基 选择 设为星标 做积极的人 而不是积极废人 源码精品专栏 原创 Java 2020 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网络应用框架 Netty 源码解析 消息中间件 Rock
  • vovnet 测试

    vovnet39 1070 640 640 batch 1 15ms 自己改了参数 import time import torch import torch nn as nn import torch nn functional as F
  • Jvm实际运行情况-JVM(十七)

    上篇文章说jmap和jstat的命令 如何查看youngGc和FullGc耗时和次数 Jmap JVM 十六 Jvm实际运行情况 背景 机器配置 2核4G JVM内存大小 2G 系统运行天数 7天 期间发生FULL GC次数和耗时 500多
  • JS数组reduce()方法详解

    reduce 方法接收一个函数作为累加器 数组中的每个值 从左到右 开始缩减 最终计算为一个值 reduce 可以作为一个高阶函数 用于函数的 compose 注意 reduce 对于空数组是不会执行回调函数的 首先我们看一下参数initi
  • 期货开户交易贵在坚持

    期货人生之一 交易贵在坚持 水滴石穿虽然平日看起来不起眼 但随着岁月的流逝 小流也将汇集成复利的海洋 因为只有时间才是真正成就复利可怕的力量 即使一生做的再成功 也并不能说明什么问题 只能说明我坚持了交易的原则 仅此而已 失去原则 我将一文
  • json应用场景与实战

    1 php中的json简介 首先我们说json是一种简便的轻量级的数据交换格式 能够在吴福气之间交换数据 json起源 1 标量 2 序列 3 映射 2 怎样使用json JSON的基本语法 JSON的四个基本规则 1 并列的数据之间用逗号
  • BeanUtils.copyProperties的用法

    BeanUtils copyProperties的用法 BeanUtils copyProperties a b 首先BeanUtils有2个包 org springframework beans BeanUtils 这个包 是a b为对象
  • 基于 spring cloud 的广告系统设计与实现(一)

    1 实现功能 CPM Cost Per Mille 每千人成本 CPT Cost Per Time 每时间段成本 CPC Cost Per Click 每点击成本 2 所包含子系统 3 所用技术 4 扩展 5 广告系统架构 转载于 http
  • 数据分析 之(一) --- 环境搭建

    安装 首先打来终端 安装 ipython 可以在终端 输入 ipython 回车进入 exit 回车退出 1 pip V 2 pip install ipython 其次 安装 jupyter 1 pip install jupyter 启
  • [人工智能-综述-9]:科学计算、大数据分析、人工智能、机器学习、深度学习全面比较

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 124245520 目录 第1章 sci
  • CORS漏洞原理分析

    CORS跨域漏洞原理分析 CORS全称为Cross Origin Resource Sharing即跨域资源共享 用于绕过SOP 同源策略 来实现跨域资源访问的一种技术 而CORS漏洞则是利用CORS技术窃取用户敏感数据 以往与CORS漏洞