同源策略简介

参考资料

1.《白帽子讲WEB安全 纪念版》
2.《黑客攻防技术宝典 浏览器实战篇》
3.农夫安全开源计划-漏洞原理篇

一、理解同源策略

1.同源策略(Same Origin Policy)是一种约定,是浏览器最核心、最基本的安全功能。Web是构建在同源策略的基础之上的,浏览器只是针对同源策略的一种实现。(这段引自《白帽子讲WEB安全 纪念版》,这里只需要理解同源策略的重要性即可)

2.下面使用一个例子来加深同源策略的理解:
假设一个医院中有若干名病人,每一位病人都有一份属于自己的病历。由于涉及到个人隐私等问题,正常情况下不允许其他病人随意翻阅他人的病历。这里的限制就类似于同源策略。

3.同源策略的“源(Origin)”指的是什么?
同源策略中的“源”由三部分组成:
(1)协议:http、https …
(2)主机名:a.com、b.com …
(3)端口:80、8080 …

4.两个站点“同源”需要满足的条件:
一般情况下两个站点需要同时满足协议、主机名和端口相同才能视为同源,但是不同的浏览器、插件等对于同源策略的实现有所不同。例如在Java6和Java7中,将不同主机名但相同IP的站点视为同源。

5.判断是否同源的具体例子
假设以http://www.a.com为参考,判断以下站点是否与该站点同源
(1)http://www.a.com/user/index.html :同源
(2)https://www.a.com :不同源(协议不同)
(3)http://www.a.com:123 :不同源(端口不同)
(4)http://test.a.com :不同源(主机名不同)

二、为什么需要同源策略

从直观上看确实不好理解,一般站点的内容不都是公开的吗?用户随便输入一个网址就能访问到相应的内容,为什么需要增加一个同源策略的限制?

首先从上文提到的例子来看,若某位病人的病历可以被其他病人随意查看,那么病人的隐私等信息将会毫无保密可言。站点内容也一样,特别是针对于那些含有个人信息的站点,若其他站点可以随意访问和操纵此类站点,那是多么可怕的一件事。

简单举个例子:
1.假设Tom登陆了tom.secret.com,该网站存储了Tom的个人隐私信息,比如Tom喜欢他的同桌Marry。
2.而Jerry是一个喜欢窥探别人隐私的坏蛋,他制作了一个钓鱼网站:jerry.hacker.com,里面包含一段窃取tom.secret.com中内容的脚本。
3.Jerry引诱Tom点击了jerry.hacker.com,此时,jerry.hacker.com中包含的脚本窃取了tom.secret.com中的内容,并将该内容传回了Jerry的服务器上,Jerry便可以知道Tom的隐私信息。
注:该攻击是建立在浏览器不存在同源策略的情况下

三、同源策略的主要内容

上面的例子已经描述了没有同源策略的话会造成很严重的后果,下面以浏览器的同源策略为例,具体介绍同源策略的内容。

1.同源策略限制了非同源站点的请求:默认情况下,如果使用XMLHttpRequest对象(XHR)向不同来源发送请求,那你就会读不到响应。(请求还是会到达目标网站;可以使用CORS技术来实现跨域通信)
2.同源策略限制了非同源的“document”或脚本,对当前“document”读取或设置某些属性(保证站点内容不被窃取和篡改)。
3.对于<script>, <img>, <link>, <iframe>等标签,可以通过src属性跨域加载资源(实际上是由浏览器发起了一个GET请求),对于通过src属性加载的资源,浏览器限制了JavaScript的权限,使其不能读、写返回的内容。

四、总结

1.同源策略中“源”的三个组成部分:协议、主机名、端口
2.同源策略的主要作用:保持不同源站点之间的独立性,避免不同源的站点对其他站点数据内容的窃取和篡改

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值