浏览器的同源策略 |
古代的楚河汉界明确规定了楚汉两军的活动界限,理应遵守,否则必天下大乱,而事实上天下曾大乱后又统一。这里我们不用管这些“分久必合,合久必分”的问题,关键是看到这里规定的“界限”。
Web 世界之所以能如此美好地呈现在我们面前,多亏了浏览器的功劳,不过浏览器不是一个花瓶——只负责呈现,它还制定了一些安全策略,这些安全策略有效地保障了用户计算机的本地安全与Web 安全。 注:👨🎨🎒🗡💩✋ 计算机的本地与Web 是不同的层面,Web 世界(通常称为Internet 域)运行在浏览器上,而被限制了直接进行本地数据(通常称为本地域)的读写。 同源策略是众多安全策略的一个,是Web 层面上的策略,非常重要,如果少了同源策略,就等于楚汉两军没了楚河汉界,这样天下就大乱了。 同源策略规定:不同域的客户端脚本在没明确授权的情况下,不能读写对方的资源。下面分析同源策略下的这个规定,其中有几个关键词:不同域、客户端脚本、授权、读写、资源。👵🩰💳😅🖐 1.不同域或同域 同域要求两个站点同协议、同域名、同端口,比如:表1 展示了表中所列站点与 是否同域的情况。 🧑🍳🧦🩺🤮✋ 表1 :是否同域情况
从表1中的对比情况可以看出,我们通常所说的两个站点同域就是指它们同源。 👁🎢🦞ℹ🦦 2.客户端脚本 客户端脚本主要指JavaScript(各个浏览器原生态支持的脚本语言)、ActionScript(Flash的脚本语言),以及JavaScript 与ActionScript 都遵循的ECMAScript 脚本标准。Flash 提供通信接口,使得这两个脚本语言可以很方便地互相通信。客户端的攻击几乎都是基于这两个脚本语言进行的,当然JavaScript 是最广泛的。 💅⛵🥑📳🦠 被打入“冷宫”的客户端脚本有VBScript,由于该脚本语言相对较孤立,又有当红的JavaScript 存在,所以实在是没有继续存在的必要。 3.授权 一般情况下,看到这个词,我们往往会想到服务端对客户端访问的授权。客户端也存在授权现象,比如:HTML5 新标准中提到关于AJAX 跨域访问的情况,默认情况下是不允许跨域访问的,只有目标站点(假如是www.guhei.net)明确返回HTTP 响应头:Access-Control-Allow-Origin: 🖕🗺🍖♀🦖 那么 站点上的客户端脚本就有权通过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 世界就无隐私可言了。这就是同源策略的重要性,它限制了这些行为。 当然,在同一个域内,客户端脚本可以任意读写同源内的资源,前提是这个资源本身是可读可写的。
帖子热度 6946 ℃
| ||||||||||||||||||
|
||||||||||||||||||
微机原理闹危机,随机过程随机过,实变函数学十遍,汇编语言不会编!
|