浏览器的同源策略

浏览器安全之同源策略 同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能会受到影响.可以说Web是构建在同源策略的基础之上的,浏览器只是针对同源策略的一种实现.浏览器的同源策略,限制了来自不同源的"document"或脚本,对当前"document"读取或设置某些属性.影响"源"的因素有:协议,域名,端口号.需要注意的是,对于当前页面来说,页面存放JavaScript文... 阅读详情

前言:

同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源的交互。这是一个用于隔离潜在恶意文件的安全机制。

同源的定义

如果两个页面的协议,端口(如果有指定)和主机都相同,则两个页面具有相同的源。我们也可以把它称为“协议/主机/端口 tuple”,或简单地叫做“tuple". ("tuple" ,“元”,是指一些事物组合在一起形成一个整体,比如(1,2)叫二元,(1,2,3)叫三元)

下表给出了相对http://store.company.com/dir/page.html同源检测的示例:

URL结果原因
http://store.company.com/dir2/other.html成功 只有路径不同
http://store.company.com/dir/inner/another.html成功 只有路径不同
https://store.company.com/secure.html失败不同协议 ( https和http )
http://store.company.com:81/dir/etc.html失败不同端口 ( http:// 80是默认的)
http://news.company.com/dir/other.html失败不同域名 ( news和store )

源的继承

在页面中用 about:blank 或 javascript: URL 执行的脚本会继承打开该 URL 的文档的源,因为这些类型的 URLs 没有明确包含有关原始服务器的信息。

例如,about:blank 通常作为父脚本写入内容的新的空白弹出窗口的 URL(例如,通过  Window.open()  机制)。 如果此弹出窗口也包含代码,则该代码将继承与创建它的脚本相同的源。

注意:在Gecko 6.0之前,如果用户在位置栏中输入 data URLs,data URLs 将继承当前浏览器窗口中网页的安全上下文。

data:URLs 获得一个新的,空的安全上下文。

IE 例外

当涉及到同源策略时,Internet Explorer 有两个主要的不同点

  • 授信范围(Trust Zones):两个相互之间高度互信的域名,如公司域名(corporate domains),不遵守同源策略的限制。
  • 端口:IE 未将端口号加入到同源策略的组成部分之中,因此 http://company.com:81/index.html 和 http://company.com/index.html  属于同源并且不受任何限制。

这些例外是非标准的,其它浏览器也未做出支持,但会助于开发基于window RT IE的应用程序。

源的更改

页面可能会因某些限制而改变他的源。脚本可以将 document.domain 的值设置为其当前域或其当前域的父域。如果将其设置为其当前域的父域,则这个较短的父域将用于后续源检查。假设 http://store.company.com/dir/other.html 文档中的一个脚本执行以下语句:

document.domain = "company.com";

这条语句执行之后,页面将会成功地通过对 http://company.com/dir/page.html 的同源检测(假设http://company.com/dir/page.html 将其 document.domain 设置为“company.com”,以表明它希望允许这样做 - 更多有关信息,请参阅 document.domain )。然而,company.com 不能设置 document.domain 为 othercompany.com,因为它不是 company.com 的父域。

端口号是由浏览器另行检查的。任何对document.domain的赋值操作,包括 document.domain = document.domain 都会导致端口号被重写为 null 。因此 company.com:8080 不能仅通过设置 document.domain = "company.com" 来与company.com 通信。必须在他们双方中都进行赋值,以确保端口号都为 null 。

注意:使用 document.domain 来允许子域安全访问其父域时,您需要在父域和子域中设置 document.domain 为相同的值。这是必要的,即使这样做只是将父域设置回其原始值。不这样做可能会导致权限错误。

跨源网络访问

同源策略控制了不同源之间的交互,例如在使用XMLHttpRequest 或 <img> 标签时则会受到同源策略的约束。这些交互通常分为三类:

  • 通常允许跨域写操作(Cross-origin writes)。例如链接(links),重定向以及表单提交。特定少数的HTTP请求需要添加 preflight。
  • 通常允许跨域资源嵌入(Cross-origin embedding)。之后下面会举例说明。
  • 通常不允许跨域读操作(Cross-origin reads)。但常可以通过内嵌资源来巧妙的进行读取访问。例如可以读取嵌入图片的高度和宽度,调用内嵌脚本的方法,或availability of an embedded resource.

以下是可能嵌入跨源的资源的一些示例:

  • <script src="..."></script> 标签嵌入跨域脚本。语法错误信息只能在同源脚本中捕捉到。
  • <link rel="stylesheet" href="..."> 标签嵌入CSS。由于CSS的松散的语法规则,CSS的跨域需要一个设置正确的Content-Type 消息头。不同浏览器有不同的限制: IE, Firefox, Chrome, Safari (跳至CVE-2010-0051)部分 和 Opera。
  • <img>嵌入图片。支持的图片格式包括PNG,JPEG,GIF,BMP,SVG,...
  • <video> 和 <audio>嵌入多媒体资源。
  • <object>, <embed> 和 <applet> 的插件。
  • @font-face 引入的字体。一些浏览器允许跨域字体( cross-origin fonts),一些需要同源字体(same-origin fonts)。
  • <frame> 和 <iframe> 载入的任何资源。站点可以使用X-Frame-Options消息头来阻止这种形式的跨域交互。

如何允许跨源访问

使用 CORS 允许跨源访问。

如何阻止跨源访问

  • 阻止跨域写操作,只要检测请求中的一个不可测的标记(CSRF token)即可,这个标记被称为Cross-Site Request Forgery (CSRF) 标记。必须使用这个标记来阻止页面的跨站读操作。
  • 阻止资源的跨站读取,需要保证该资源是不可嵌入的。阻止嵌入行为是必须的,因为嵌入资源通常向其暴露信息。
  • 阻止跨站嵌入,需要确保你的资源不能是以上列出的可嵌入资源格式。多数情况下浏览器都不会遵守 Content-Type 消息头。例如,如果您在HTML文档中指定 <script> 标记,则浏览器将尝试将HTML解析为JavaScript。 当您的资源不是您网站的入口点时,您还可以使用CSRF令牌来防止嵌入。

跨源脚本API访问

Javascript的APIs中,如 iframe.contentWindow, window.parent, window.open 和 window.opener 允许文档间直接相互引用。当两个文档的源不同时,这些引用方式将对 Window 和 Location对象的访问添加限制,如下两节所述。

为了在不同源中文档进一步交流,可以使用window.postMessage。

Window

规范:  http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#security-window.

 允许以下对 Window 属性的跨源访问:

方法
window.blur
window.close
window.focus
window.postMessage
属性 
window.closed只读.
window.frames只读.
window.length只读.
window.location读/写.
window.opener只读.
window.parent只读.
window.self只读.
window.top只读.
window.window只读.

某些浏览器允许访问比规范允许的更多属性。

Location

规范:  http://www.whatwg.org/specs/web-apps/current-work/multipage/browsers.html#security-location.

允许以下对 Location 属性的跨源访问:

方法
location.replace
属性 
URLUtils.href只写.

某些浏览器允许访问比规范允许的更多属性。

跨源数据存储访问

存储在浏览器中的数据,如localStorage和IndexedDB,以源进行分割。每个源都拥有自己单独的存储空间,一个源中的Javascript脚本不能对属于其它源的数据进行读写操作。

Cookies 使用不同的源定义方式。一个页面可以为本域和任何父域设置cookie,只要是父域不是公共后缀(public suffix)即可。Firefox 和 Chrome 使用 Public Suffix List 决定一个域是否是一个公共后缀(public suffix)。Internet Explorer使用其自己的内部方法来确定域是否是公共后缀。不管使用哪个协议(HTTP/HTTPS)或端口号,浏览器都允许给定的域以及其任何子域名(sub-domains) 访问 cookie。设置 cookie 时,你可以使用Domain,Path,Secure,和Http-Only标记来限定其访问性。读取 cookie 时,不会知晓它的出处。 即使您仅使用安全的https连接,您看到的任何cookie都可能使用不安全的连接进行设置。

 

Gartner《构建可扩展数据产品建设框架》心得 数据产品化:从概念到落地的实践指南 当前企业正从传统数据需求模式转向数据产品化新范式。本文系统阐述了数据产品的核心价值、定义分类和实施框架,指出成功关键是将数据包装为可复用、可扩展的产品。Gartner框架强调产品思维,提出4阶段12步实施路径,涵盖设计、工程、发布和监控全流程。文章特别提醒要避免7大常见误区,如简单重命名报表、忽视元数据治理等,建议采取MVP策略,90天内完成从价值验证到产品落地的闭环。实施中需平衡技术选型与业务需求,建立跨职能团队,并通过AARRR模型持续追踪产品价值。 阅读详情

相关推荐

关于动态存储器dram中rank,bank,device之间的关系

DEVICE_WIDTH表示设备的带宽(单位bit),每个列(column)包含DEVICE_WIDTH 位(bit),每一行(row)包含NUM_COLS个column。   而每一个bank包含NUM_ROWS个行(row)。所以一个设备(device)的存储容量为PER_DEVICE_STORAGE =NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUM_BANKS (i

wyj7260的专栏 4731

浏览器的同源策略与跨域处理

一、 同源策略 如果两个页面的协议,端口(如果有指定)和域名都相同,则两个页面具有相同的源。 下表给出了相对http://store.company.com/dir/page.html同源检测的示例: 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。 允许跨源访问的一些例子: <script src="..."></script&gt...

weixin_33713350的博客 146

拆开华为BBU5900,看看5G基站的大脑里到底装了啥?

本文深度拆解华为BBU5900,揭示5G基站核心处理单元的硬件架构与设计哲学。通过详细解析模块化设计、智能电源系统和动态散热方案,展现其支撑千兆速率、毫秒级时延的技术奥秘,为5G网络部署提供实用参考。

weixin_31456563的博客 561

什么是浏览器同源策略(Same-Origin Policy)?

协议:如httphttps。域名:如。端口:如80(http 默认端口)或443(https 默认端口)。如果两个 URL 的协议、域名和端口都相同,则它们被认为是同源的。和是同源的。和不是同源的(不同的协议)。和不是同源的(不同的域名)。和不是同源的(不同的端口)。浏览器同源策略是 Web 安全的重要基石,尽管有时候它可能会限制开发者的操作,但其存在的主要目的是为了保护用户免受潜在的安全威胁。

xingyu_qie的专栏 2361

Windows应急响应实战:灰鸽子木马检测与清除全流程解析

远程控制木马(RAT)是一种基于客户端/服务器(C/S)架构的恶意软件,攻击者通过它能够远程操控受害主机,实现屏幕监控、文件窃取、键盘记录等操作,对个人隐私与企业数据安全构成严重威胁。其技术原理通常涉及进程注入、网络通信、持久化机制等核心环节,在应急响应中具有极高的分析价值。掌握此类木马的检测与清除方法,是Windows系统安全防护与事件处置的基本功。本文以经典的灰鸽子木马为例,结合进程分析、网络排查、注册表检查等实战技术,系统讲解从行为识别、痕迹取证到彻底清除的完整操作流程,并涵盖Rootkit对抗、无文

weixin_30521161的博客 414

LVGL hal indev(porting evdev)

LVGL中对输入设备的管理是单例实现的,而在Linux的输入设备是多个的,所以需要对其进行改造成多例实现。

Bigan(安)的博客 3345

7.浏览器原理之浏览器同源策略

目录1.什么是同源策略2.如何解决跨域问题3.正向代理和反向代理的区别4.NginX的概念及其工作原理 1.什么是同源策略 2.如何解决跨域问题 3.正向代理和反向代理的区别 4.NginX的概念及其工作原理 NginX是一款轻量级的Web服务器,也可以用于反向代理,负载均衡和HTTP缓存等。NginX使用异步事件驱动的方法来处理请求,是一款面向性能设计的HTTP服务器。 传统的Web服务器如Apache是process-based模型的,而Nginx是基于event-driven模型的。正是这个主要的区别

qq_42349528的博客 4519

多思计组实验实验六 微程序控制器实验

实验六 微程序控制器实验

qq_53089329的博客 3780

浏览器同源策略

我们可以设想这样一个场景:学校开放了一个窗口给家长,让家长可以通过窗口询问孩子的成绩。班级里面的每个学生都是互不相关、互不影响的个体,每个学生和家长都来自同一个家庭。当同一个家庭里面的家长询问孩子的成绩,窗口就会给出相应的数据。如果不同家庭的家长来询问其他学生的成绩,窗口都给出应答,这样孩子成绩的安全性就没法得到保证。这样不就乱套了吗?如果两个URL是协议端口(port)、域名(host)都相同的话,那么这两个URL就是同源的。下表给出了与URLURL结果原因同源只是路径不同同源只是路径不同。

Karka_的博客 1557

【020】C++ 动态内存管理解析:new 和 delete 的正确使用

C++中的动态内存分配是在程序运行时根据需要进行内存空间的分配和释放,与静态内存分配相比,具有更大的灵活性和适应性。动态内存分配可以通过new和delete或者malloc()和free()等函数实现。在程序运行时无法确定所需的内存大小。需要在多个函数之间共享数据,并且数据可能被频繁地创建和销毁。静态数组无法满足需求,例如需要支持可变长度数组。如果在动态分配内存后忘记了释放它,则会导致内存泄漏。为避免内存泄漏,可以使用智能指针或手动管理内存的方式来释放动态分配的内存。

Lion_Long的博客 1470

038、OIS 光学防抖原理与调试:陀螺仪数据融合、Lens Shift OIS 的闭环控制

本文分享了OIS光学防抖系统的调试经验和关键技术要点。作者通过一个"呼吸感"Bug案例,揭示了陀螺仪数据融合和闭环控制的重要性。系统介绍了OIS的三个关键层次:传感器层(陀螺仪特性)、控制层(复合算法)和执行层(闭环控制)。重点讲解了陀螺仪数据融合的互补滤波实现、Lens Shift闭环控制的PID优化策略(包括积分抗饱和和微分滤波),以及前馈补偿的应用。最后总结了调试中的关键问题:数据同步、霍尔校准、温度补偿和性能评估方法,并给出实用建议:平衡算法复杂度与性能、预留带宽余量、重视产线校准等。文章强调OIS

sundong_81的博客 257

浏览器的同源策略是什么,没有同源策略会怎么样?

同源策略 同源策略由Netscape提出的一个著名的安全策略。 现在所有可以支持JavaScript的浏览器都会使用这一策略。 同源 同源即 同协议,端口,域名 同源策略的限制 不能获取不同源的cookie,LocalStorage 和 indexDB 不能获取非同源的DOM 不能发送非同源的ajax请求。(准确说应该是可以向非同源的服务器发起请求,但是返回的数据会被浏览器拦截) 同源策略由浏...

qq_42173260的博客 1621

YOLOv11改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 851

禁用浏览器同源策略的方法

1、引言 前端和后台联调的时候总会涉及到跨域,平时我们跨域主要的方法是通过CORS进行跨域,但是通过CORS进行跨域有的时候会涉及到数据安全的问题,这时候我们可以通过禁用本地浏览器的同源策略来进行跨域的联调。 2、禁用方法 2.1 IE浏览器 IE的禁用同源策略设置,进入IE的Internet选项设置,然后选择安全性,再选择自定义等级,然后下拉,找到「存取跨网络的资料来源」,选择启用即可。 2....

点点滴滴 9181

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

什么是浏览器同源策略

同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说 Web 是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。 它的核心就在于它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。 所谓同源是指:域名、协议、端口相同。 下表是相对于http://www.laixiangran.

key915的博客 2066

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

浏览器安全(同源策略及浏览器沙箱)

浏览器沙箱是一种安全机制,它为浏览器中的各种网页内容,如 JavaScript 代码、插件等,创建一个隔离的运行环境。在这个环境中,运行的程序被限制在特定范围内,无法对外部系统或其他沙箱环境造成破坏。这就好比在一个密封的 “沙箱” 内进行游戏,里面的活动不会影响到沙箱之外的世界。

2301_79442654的博客 1289

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

浏览器中的同源策略

同源策略是指,若页面的源和页面运行过程中加载的源不一致时,出于安全考虑,浏览器会对跨域的资源访问进行一些限制。

小卡酷谋的博客 439

什么是同源策略,为什么浏览器要使用同源策略

什么是同源策略 两个页面地址中的协议,域名,端口号一致,则表示同源 为什么浏览器要使用同源策略 设置同源策略的主要目的是为了安全,如果没有同源限制,在浏览器中的cookie等其他数据可以任意读取,不同域下的DOM任意操作,ajax任意请求其他网站的数据,包括隐私数据。 ...

qq_29055201的博客 7546

八、浏览器同源策略

同源策略是浏览器的一种安全机制,用于限制一个源(origin)的文档或脚本如何与另一个源的资源进行交互。同源策略是Web安全的基础,有效防止了跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等安全问题。本文介绍了同源策略的基本概念、实现方式及其在Web开发中的重要性。

weixin_45511682的博客 2247

浏览器的同源策略机制

所以我们可以将请求发送到自己服务器,然后自己服务器去请求目标接口资源,最后自己服务器将接口资源返回给当前页面,类似于找外援代替自己请求目标接口资源。通常请求请求回来的资源要在js中进行处理,所以jsonp跨域是利用script标签进行发送,且这种请求方式只能是get请求。但当一个项目变的很大的时候,将所有内容放在一个网站或一个服务器中会让网站变的臃肿且性能低下,所以,在一些场景中,我们需要跨过同源策略,请求到不同源的接口资源,这种场景叫跨域。同源策略,指的是浏览器限制当前网页只能访问同源的接口资源。

subsistent的博客 636

说说浏览器的同源策略

同源策略(Same origin policy)使得来自于不同来源的脚本,无法读取或修改当前源对象。它是浏览器最核心也是最基本的安全功能。 1 同源判断规则 如果域名或 IP 地址、端口与协议都相同,那么就会被判定为同源。 假设有这么一个 URL:http://www.deniro.net,下表中的 URL 与此比较,判断是否同源: URL 是否同源 原因 http://www.d...

weixin_33978044的博客 235

一篇彻底讲清浏览器同源策略

两个 URL 的协议(Protocol)、域名(Domain)、端口(Port)三者完全相同,才属于同源。示例与同源与不同源(协议不同)与不同源(域名不同)与不同源(端口不同)合理设计跨源请求方案(如选择 CORS 或代理)。避免因安全限制导致的代码异常(如 iframe 通信问题)。与后端协作配置正确的 HTTP 头,确保生产环境跨源功能正常。通过灵活运用跨源技术,既能保障安全,又能实现丰富的跨源功能需求。

梅山老妖的博客 1867
上一篇: 页面导入样式时,使用link和@import有什么区别?
下一篇: react生命周期函数详解
春风欲雨
博客等级 码龄7年 68粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值