码迷,mamicode.com
首页 > 其他好文 > 详细

同源策略

时间:2015-05-22 01:50:39      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

2015年5月21日22:37:17
喜欢看星星···
以后肯定要买个天文望远镜(⊙o⊙)…

 

↓First
对于客户端Web安全的学习与研究来说,
深入理解同源策略是非常重要的,
也是后续学习相关知识的基础.^_^

 

同源策略_Same origin policy
↓概念
是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,
则浏览器的正常功能可能都会受到影响。
可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。
它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。

 

同源→同协议,同域名和同端口.

 

↓作用What?
它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,
而不是那些来自其它站点可能怀有恶意的资源。 浏览器的同源策略, 限制了来自不同源的“document”或脚本,对当前"document"读取或设置某些属性.

 

↓为什么要同源限制What?
1→比如一个黑客程序,利用IFrame把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,
他的页面就可以通过JavaScript读取到你的表单中input的内容,这样用户名,密码就轻松搞到手了.
2→可能a.html的一段JavaScript脚本,在b.com未曾加载此脚本时,也可以随意涂改b.com的页面(在浏览器的显示中)。
为了不让浏览器的页面行为发生混乱,浏览器提出了"Origin"(源)这一概念,来自不同Origin的对象无法互相干扰.

 


 

↓影响"源"的因素有(http://a.b.com/c.html)
→host(域名或者IP地址,如果是IP地址则看做一个根域名),子域名    (hhtp://aaaaa.b.com/c.html)    
→端口(http://a.b.com:81/c.html)
→协议(https://a.b.com/c.html)
终极来说就是→必须是同一端口,同一host,同一协议...才会被认为是同源.

 

↓JavaScript和XMLHttpRequest
在浏览器中,<script>,<img>,<iframe>,<frame>,<link>等标签都可以实现跨域加载资源,
而不受同源策略的限制.这些带"src"属性的标签每次加载时候,实际上是由浏览器发起了一次GET请求.
不同于XMLHttpRequest的是,通过src属性加载时,浏览器限制了JavaScript的权限,使其不能读、
写返回的内容.对于XMLHttpRequest来说,他是可以访问来自同源对象的内容.
也就是在普通的Javascript应用中,我们可以修改Frame的href,或者IFrame的src,以实现GET方式的跨域提交,但是却不能访问跨域的Frame/IFrame中的内容。

>>>>>>>>>>

如果我们又想利用XMLHTTP的无刷新异步交互能力,又不愿意公然突破Javascript的安全策略,可以选择的方案就是给XMLHTTP加上严格的同源限制。
这样的安全策略,很类似于Applet的安全策略。IFrame的限制还仅仅是不能访问跨域HTMLDOM中的数据,而XMLHTTP则根本上限制了跨域请求的提交。 ↓也就是 W3C委员会制定了XMLHttpRequest跨域访问标准.它需要通过目标域返回的HTTP头来授权是否允许跨域访问,
因为HTTP头对于JavaScript来说一般是无法控制的
,所以认为这个方案是可以实施的. Tips:这个跨域访问方案的安全基础就是信任"JavaScript无法控制该HTTP头",如果此信任基础被打破, 则次方案也将不再安全.

 

参考地址→http://www.cnblogs.com/dsky/archive/2012/04/06/2434010.html
参考书籍→《白帽子讲Web安全》推荐大家看一下哈,不错滴···

 

本想再去维基百科上面捞点关于此话题的食材,
结果发现不知道怎么上不去了,
好吧,有时间了再完善下...

>>>>>>>>>>>未完待续
←______________→ 晚安^_^ 2015年5月22日00:01:15

 

同源策略

标签:

原文地址:http://www.cnblogs.com/love-zf/p/adnin.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!