标签:
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