客户端脚本安全 书摘

来源:互联网 发布:下载站的网站源码 编辑:程序博客网 时间:2024/05/16 17:04

摘自:《白帽子讲Web安全》吴翰清 著 电子工业出版社

2.1同源策略(Same Origin Policy)是一种约定,它是浏览器最核心也最基本的安全功能。可以说web是构建在同源策略的基础上的,浏览器只是针对同源策略的一种实现。

 

浏览器的同源策略,牵制了来自不同源的“document”或脚本,对当前“document”读取或设置某些属性。

 

例:在b.com加载的一段JavaScript脚本可以涂改b.com的页面。但在,根据同源策略,a.com中的一段JavaScruot脚本,在b.com未曾加载此脚本时不能随意涂改b.com的页面。

 

 

浏览器中JavaScript的同源策略(当JavaScript被浏览器认为来自不同源时,请求被拒绝)

影响“源”的因素有:host(域名或IP地址,如果是IP地址则看做一个根域名)、子域名、端口、协议。

 

对于当前页面来说,页面内存放JavaScript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么。js的源是加载了该js的那个,而不是存放js文件的那个。

 


 

浏览器中,<script><img><iframe><link>等标签都可以跨域加载资源,而不受同源策略的限制。这些带“src”属性的标签每次加载时,实际上是由浏览器发起了一次GET请求。不同于XMLHttpRequest的是,通过src属性加载的资源,浏览器限制了JavaScript的权限,使其不能读、写返回的内容。

 

XMLHttpRequest可以访问来自同源对象的内容,但它受到同源策略的约束,不能跨域访问资源。(如果XMLHttpRequest能跨域访问资源,则可能会导致敏感数据泄露,比如CSRFtoken。)

 

W3C制订了XMLHttpRequest跨域访问标准,他需要通过目标域返回的HTTP头来授权是否允许跨域访问,因为HTTP头对于JavaScript来说一般是无法控制的(此方案的安全基础“JavaScript无法控制HTTP头”,当此信任基础被打破,方案失效)。

 

浏览器,除了DOMCookieXMLHttpRequest会收到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略。(常见插件如FlashJava Applet、 Silverlight、 Google Gears

 例子:

Flash为例,它主要通过目标网站提供的crossdomain.xml文件判断是否允许当前“源”的Flash跨域访问目标资源。

 

 


0 0
原创粉丝点击