首页 > 其他分享 >浏览器中的同源策略

浏览器中的同源策略

时间:2024-01-06 22:31:30浏览次数:28  
标签:浏览器 策略 DOM JavaScript 同源 页面

如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。比如下面这两个 URL,它们具有相同的协议 HTTPS、相同的域名www.baidu.com,以及相同的端口 443,所以我们就说这两个 URL 是同源的。

https://www.baidu.com/?category=1
https://www.baidu.com/?category=0

浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作 DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略。

同源策略主要表现在 DOM、Web 数据和网络这三个层面。

第一个,DOM 层面。同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。

第二个,数据层面。同源策略限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。由于同源策略,我们依然无法通过第二个页面的 opener 来访问第一个页面中的 Cookie、IndexDB 或者 LocalStorage 等内容。

第三个,网络层面。同源策略限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点。

Web 世界是开放的,可以接入任何资源,而同源策略要让一个页面的所有资源都来自于同一个源,也就是要将该页面的所有 HTML 文件、JavaScript 文件、CSS 文件、图片等资源都部署在同一台服务器上,这无疑违背了 Web 的初衷,也带来了诸多限制。比如将不同的资源部署到不同的 CDN 上时,CDN 上的资源就部署在另外一个域名上,因此我们就需要同源策略对页面的引用资源开一个“口子”,让其任意引用外部文件。

所以最初的浏览器都是支持外部引用资源文件的,不过这也带来了很多问题。之前在开发浏览器的时候,遇到最多的一个问题是浏览器的首页内容会被一些恶意程序劫持,劫持的途径很多,其中最常见的是恶意程序通过各种途径往 HTML 文件中插入恶意脚本。

除此之外,它还能将页面的的敏感数据,如 Cookie、IndexDB、LoacalStorage 等数据通过 XSS 的手段发送给服务器。具体来讲就是,当你不小心点击了页面中的一个恶意链接时,恶意 JavaScript 代码可以读取页面数据并将其发送给服务器。

为了解决 XSS ,浏览器中引入了内容安全策略,称为 CSP。CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码。通过这些手段就可以大大减少 XSS 。

如果两个页面不是同源的,则无法相互操纵 DOM。不过在实际应用中,经常需要两个不同源的 DOM 之间进行通信,于是浏览器中又引入了跨文档消息机制,可以通过 window.postMessage 的 JavaScript 接口来和不同源的 DOM 进行通信。

同源策略会隔离不同源的 DOM、页面数据和网络通信,进而实现 Web 页面的安全性。

  1. 页面中可以引用第三方资源,不过这也暴露了很多诸如 XSS 的安全问题,因此又在这种开放的基础之上引入了 CSP 来限制其自由程度。
  2. 使用 XMLHttpRequest 和 Fetch 都是无法直接进行跨域请求的,因此浏览器又在这种严格策略的基础之上引入了跨域资源共享策略,让其可以安全地进行跨域操作。
  3. 两个不同源的 DOM 是不能相互操纵的,因此,浏览器中又实现了跨文档消息机制,让其可以比较安全地通信。


标签:浏览器,策略,DOM,JavaScript,同源,页面
From: https://blog.51cto.com/key3feng/9128139

相关文章

  • 一个有趣的浏览器插件“猫抓”
    一个有趣的浏览器插件“猫抓”猫抓是一款非常好用的浏览器插件,它能抓取几乎所有chrome内核浏览器的网页视频链接数据。猫抓插件可以在任意网页抓取任意视频数据并且一键抓取保存获取您需要内容,操作起来简单方便,下载内容可以保存本地电脑。猫抓功能介绍  猫抓Chrome插件是一款......
  • 【专题】2023中国电商营销趋势及增长策略研究报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34782原文出处:拓端数据部落公众号全球电商市场在疫情后持续发展,其中,中国市场占据了半壁江山,对全球电商格局产生了重大影响。阅读原文,获取专题报告合集全文,解锁文末213份电商营销相关行业研究报告。在中国,三至五线城市的城镇人口众多,约占总城镇人......
  • 【领先实践之食品饮料行业】多策略深度智能分货拣货,助力快消品企业提升核心竞争力
    用友领先实践,yonyouLeadPractice,基于高客户价值数智化实战经验积累,结合前沿洞察研究,聚焦创新业务、面向高客户价值,提供十大核心领域、近百个细分行业的领先实践,实现客户高价值交付服务,让客户尽享数智化价值。在快消品行业,库存周转速度至关重要。分货拣货作为销售管理流程的重要环......
  • Chrome浏览器的跨域设置(Window系统)
    注意:此方案仅适用于windows系统!!!做前后端分离的开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,而且chrome浏览器支持可跨域的设置,但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法不再适用了。一、开发使用习惯下载好谷歌浏览器以后,快捷方式复制两份放在......
  • 浏览器接口 fetch 发起的请求如何跟踪上传进度?
    在使用浏览器接口`fetch`发起请求时,你可以利用`ReadableStream`对象的`onprogress`事件来跟踪上传进度。`fetch`函数返回的是一个`Promise`对象,可以通过调用`response.body.getReader()`获取到`ReadableStream`,然后通过监听`onprogress`事件来获取上传进度信息。以下是一个示例代码......
  • 大数据安全与隐私:挑战与解决策略
    1.背景介绍大数据安全与隐私是当今社会中最关键的问题之一。随着互联网的普及和大数据技术的发展,人们生活中的各种数据都在网上流传,包括个人信息、商业秘密、国家机密等。这些数据的泄露和滥用会对个人、企业和国家造成严重后果。因此,大数据安全与隐私变得越来越重要。在大数据领域......
  • 策略迭代与多智能体系统:相似之处与区别
    1.背景介绍策略迭代和多智能体系统都是人工智能领域中的重要研究方向,它们在过去几年中得到了广泛的关注和应用。策略迭代是一种基于反馈的学习方法,通过迭代地更新策略来逐步优化行为,而多智能体系统则是由多个自主、互动的智能体组成的复杂系统。在这篇文章中,我们将从以下几个方面进......
  • 【Azure APIM】APIM 策略语句如何来设置多个Cookie值让浏览器保存
    问题描述在APIM的 <return-response>策略中,设置Cookie值,因为需要设置多个Cookie值,使用下面两种方式都只能保存一个Cookie值:方式一:把多个cookie值用分号(;)拼接<return-response><set-statuscode="201"/><set-headername="Set-Cookie"exists-actio......
  • 武汉星起航分享亚马逊跨境卖家差异化选品的市场调研策略
    在亚马逊这个庞大的电商生态系统中,跨境卖家们想要在激烈的竞争中脱颖而出,实现订单的高效转化,关键之一就是做好差异化选品,并在此基础上开展深入的市场调研。本文将揭示一些有效的市场调研秘籍,帮助亚马逊跨境卖家实现更精准的差异化选品,提升订单转化率。首先,卖家应该关注目标市场的热......
  • 【ChatGPT 默认强化学习策略】PPO 近端策略优化算法
    PPO近端策略优化算法PPO=概率比率裁剪+演员-评论家算法演员-评论家算法:多智能体强化学习核心框架概率比率裁剪:逐步进行变化的方法PPO目标函数的设计重要性采样KL散度 PPO=概率比率裁剪+演员-评论家算法论文链接:https://arxiv.org/abs/1707.06347OpenAI提出PPO旨在......