zoukankan      html  css  js  c++  java
  • 同源策略

    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
  • 相关阅读:
    python核心编程课后题第二版36页第二章
    Python每个N个字符插入一个符号
    python核心编程课后题第二版97页第五章
    意外的 404 错误
    WCF简单使用(分别部署在控制台和IIS上)
    最近看的项目cakephp
    我正在翻译的CakePHP manual
    C# 高质量编程
    Android 环境搭建
    MVC 读配置文件 多语言
  • 原文地址:https://www.cnblogs.com/love-zf/p/adnin.html
Copyright © 2011-2022 走看看