无法逃避的是自我,而无法挽回的是过去。 收藏本站
登陆 / 注册 搜索

阅读:6.4K   回复: 2

浏览器的同源策略

[复制链接]
小执念 古黑浩劫论坛大牛 2015-12-7 13:46 |显示全部楼层

可遇不可求的事:故乡的云,上古的玉,随手的诗,十九岁的你。

管理员
  古代的楚河汉界明确规定了楚汉两军的活动界限,理应遵守,否则必天下大乱,而事实上天下曾大乱后又统一。这里我们不用管这些“分久必合,合久必分”的问题,关键是看到这里规定的“界限”。

  Web 世界之所以能如此美好地呈现在我们面前,多亏了浏览器的功劳,不过浏览器不是一个花瓶——只负责呈现,它还制定了一些安全策略,这些安全策略有效地保障了用户计算机的本地安全与Web 安全。

  注:

👨‍⚕️‏🩰✒🙂👈


计算机的本地与Web 是不同的层面,Web 世界(通常称为Internet 域)运行在浏览器上,而被限制了直接进行本地数据(通常称为本地域)的读写。

  同源策略是众多安全策略的一个,是Web 层面上的策略,非常重要,如果少了同源策略,就等于楚汉两军没了楚河汉界,这样天下就大乱了。


  同源策略规定:不同域的客户端脚本在没明确授权的情况下,不能读写对方的资源。下面分析同源策略下的这个规定,其中有几个关键词:不同域、客户端脚本、授权、读写、资源。
🤙🌧🆎🪶‎
  1.不同域或同域

  同域要求两个站点同协议、同域名、同端口,比如:表1 展示了表中所列站点与www.guhei.net是否同域的情况。
🧑‍🚀‏🥾🪓🥲🤝

表1 :是否同域情况

站点是否同域原因
https://www.guhei.net/不同域协议不同,https与http是不同的协议
http://m.guhei.net/  不同域域名不同,m子域与www子域不同
http://guhei.net/  不同域域名不同,顶级域与www子域不是一个概念
http://www.guhei.net:8080  不同域端口不同,8080与默认的80端口不同
http://www.guhei.net/a/  同域满足同协议、同域名、同端口,只是这里多了一个目录而已


  从表1中的对比情况可以看出,我们通常所说的两个站点同域就是指它们同源。
👁🌧🫑🅾🦦‌

  2.客户端脚本

  客户端脚本主要指JavaScript(各个浏览器原生态支持的脚本语言)、ActionScript(Flash的脚本语言),以及JavaScript 与ActionScript 都遵循的ECMAScript 脚本标准。Flash 提供通信接口,使得这两个脚本语言可以很方便地互相通信。客户端的攻击几乎都是基于这两个脚本语言进行的,当然JavaScript 是最广泛的。
👩‌👓🪗😷🦷
  被打入“冷宫”的客户端脚本有VBScript,由于该脚本语言相对较孤立,又有当红的JavaScript 存在,所以实在是没有继续存在的必要。

  3.授权

  一般情况下,看到这个词,我们往往会想到服务端对客户端访问的授权。客户端也存在授权现象,比如:HTML5 新标准中提到关于AJAX 跨域访问的情况,默认情况下是不允许跨域访问的,只有目标站点(假如是www.guhei.net)明确返回HTTP 响应头:Access-Control-Allow-Origin: www.universemy.com
🧠🏦🦀↔🦖‍

  那么 www.universemy.com 站点上的客户端脚本就有权通过AJAX 技术对www.guhei.net 上的数据进行读写操作。这方面的攻防细节很有趣。

  注:
🧠🌧🍒❓🐠‌
AJAX 是Asynchronous JavaScript And XML 的缩写,让数据在后台进行异步传输,常见的使用场景有:对网页的局部数据进行更新时,不需要刷新整个网页,以节省带宽资源。AJAX 也是黑客进行Web 客户端攻击常用的技术,因为这样攻击就可以悄无声息地在浏览器后台进行,做到“杀人无形”。

  4.读写权限

  Web 上的资源有很多,有的只有读权限,有的同时拥有读和写的权限。比如:HTTP请求头里的Referer(表示请求来源)只可读,而document.cookie 则具备读写权限。这样的区分也是为了安全上的考虑。

👃🏠🍇🅾🕊‌  5.资源

  资源是一个很广泛的概念,只要是数据,都可以认为是资源。同源策略里的资源是指Web 客户端的资源。一般来说,资源包括:HTTP 消息头、整个DOM 树、浏览器存储(如:Cookies、Flash Cookies、localStorage 等)。客户端安全威胁都是围绕这些资源进行的。

  注:👴‍👜🔍😷🙏
DOM全称为Document Object Model,即文档对象模型,就是浏览器将HTML/XML这样的文档抽象成一个树形结构,树上的每个节点都代表HTML/XML 中的标签、标签属性或标签内容等。这样抽象出来就大大方便了JavaScript 进行读/写操作。Web 客户端的攻击几乎都离不开DOM操作。

  到此,已经将同源策略的规定分析清楚,如果Web 世界没有同源策略,当你登录Gmail邮箱并打开另一个站点时,这个站点上的JavaScript 就可以跨域读取你的Gmail 邮箱数据,这样整个Web 世界就无隐私可言了。这就是同源策略的重要性,它限制了这些行为。

  当然,在同一个域内,客户端脚本可以任意读写同源内的资源,前提是这个资源本身是可读可写的。
上一篇
下一篇
帖子热度 6458 ℃

清川带长薄 「出类拔萃」 2018-5-1 09:13 来自手机 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编!
柔光的暖阳 「龙战于野」 2018-5-7 15:25 |显示全部楼层

这个用户很懒,还没有填写自我介绍呢~

小执念 大人威武
您需要登录后才可以回帖 登录 | 免费注册  

本版积分规则

快速回复 返回列表