《白帽子讲Web安全》| 学习笔记之客户端脚本安全

第二章浏览器安全

1、同源策略(Same Origin Policy),是一种约定,它是浏览器最核心也是最基本的安全功能。浏览器的同源策略,限制了来自不同源的“document"或脚本,对当前”document"读取或设置某些属性。

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

对于当前页面来说,页面内存放的javascript文件的域并不重要,重要的是加载javascript页面所在的域是什么。

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

XMLHttpRequest收到同源策略的约束,不能跨域访问资源。但是由于随着业务的发展,跨域的请求需求越来越迫切,因此W3C委员会制定了XMLHttpRequest跨域访问标准。它需要通过目标域放回的HTTP头来授权是否允许跨域访问(因为HTTP头对于Javascript来说一般是无法控制的)具体实现过程,在HTML5在详细探讨。

对于浏览器来说,除了DOM、Cookie、XMLHttpRequest会收到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略。最常见的一些插件如Flash、Java Applet、Silverlight、Google Gears等都有自己的控制策略。

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

以www.qq.com的策略文件为例,当浏览器在任意其他域的页面加载了Flash后,如果对www.qq.com发起访问请求,Flash会先检查www.qq.com上此策略是否存在。如果文件存在,则检查发起请求的域是否在许可范围内。代码如下:

     www.qq.com/crossdomain.xml

          <cross-domain-policy>

          <allow-access-from domain="*.qq.com"/>

          <allow-access-from domain="*.gtimg.com"/>

          </cross-domain-policy> 

在Flash9及以后的版本,还实现了MIME检查以确认crossdomain.xml是否合法,也会检查crossdomain.xml是否在根目录下。

2、浏览器沙箱

在网页上插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式,在黑客圈子里被形象的称为“挂马”。

Sandbox即沙箱,泛指“资源隔离类模块”的代名词。Sandbox的设计目的一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越Sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API会严格检查请求的合法性。

浏览器采用sandbox技术,无疑可以让不受信任的网页代码、javascript代码运行在一个受限制的环境中,从而保护本地桌面系统的安全。

浏览器安全是一个整体,在现今的浏览器中,虽然有多进程架构和sandbox的保护,但是浏览器所加载的一些第三方插件往往不受sandbox管辖。

3、恶意网址拦截

很多时候,“挂马”攻击在实施的时候会在一个正常的网页中通过<script>或者<iframe>等标签加载一个恶意的网址。为了保护用户安全,浏览器厂商纷纷推出了各自的拦截恶意网址功能。目前各个浏览器的拦截恶意网址的功能都是基于“黑名单”的。

  常见的恶意网址分两类:

   一类是挂马网站:包含恶意脚本如javascript或flash,通过浏览器的漏洞(包括一些插件、控件的漏洞)执行shellcode,在用户电脑中植入木马;

   二类是钓鱼网站,通过模仿知名网站的相似页面来欺骗用户。

   PhishTank是互联网上免费提供恶意网址黑名单的组织之一。Google公开了其内部使用的SafeBrowsing API ,任何组织或个人都可以在产品中接入,以获取Google的恶意网址库。

   EV SSL 证书:是全球数字证书颁发机构与浏览器厂商一起打造的增强型证书,其主要特色是浏览器会给予EVSSL证书特殊待遇。EVSSL也遵循X509标准,并向前兼容普通证书。

4、高速发展的浏览器安全

IE8:XSS Filter,当用户访问的URL中包含了XSS攻击的脚本时,IE就会修改其中的关键字符使其攻击无法成功完成,并对用户弹出提示框。

Firefox:Content Security Policy(CSP),由服务器返回一个HTTP头,并在其中描述页面应该遵守的安全策略,这种自定义的语法必须由浏览器支持并实现,Firefox是第一个支持此标准的浏览器。

扩展和插件极大地丰富了浏览器的功能,但安全问题也随之而来,除了插件可能存在漏洞外,插件也可能会有恶意行为。插件和扩展的权限都高于页面JavaScript的权限,比如可以进行一些跨域网络请求等。

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_42646885/article/details/95065479