第二章 浏览器安全

2.1 同源策略

浏览器的同源策略(Same Origin Policy)限制了来自不一样源的“document”或脚本,对当前“document”读取或设置某些属性。同源策略保证来自不一样源的对象没法相互干扰,避免浏览器页面行为混乱。html

JavaScript同源状况举例:java

URL Outcome Reason
store.company.com/dir2/other.… Success
store.company.com/dir/another… Success
store.company.com/secure.html Failure Different protocol
store.company.com:81/secure.html Failure Different port
news.company.com/secure.html Failure Different host

由上表可看出,影响“源”的因素包括: 域名host、子域名、端口port、协议protocolweb

Notice: 对于当前页面来讲,页面存放的JavaScript文件的域并不重要,重要的是加载JavaScript页面所在的域是什么shell

<script src=http://b.com/b.js></script>跨域

a.com经过以上代码加载了b.com上的b.js,可是b.js是运行在a.com页面中,所以对于当前打开的a.com来讲,b.js的Origin就是a.com。浏览器

在浏览器中,<script><img><iframe>等标签均可以跨域加载资源,而不受同源策略的限制。安全

W3C制定了XMLHttpRequest跨域访问标准。它须要经过目标域返回的HTTP请求头来受权是否容许跨域访问。对于浏览器来讲,DOM、Cookie、XMLHttpRequest会受到同源策略的限制,还有一些第三方插件例如Flash、Google Gears等也有各自的同源策略。服务器

2.2 浏览器沙箱

浏览器沙箱(Sandbox)是浏览器多进程架构中将浏览器各个功能模块分开的一种隔离。产生背景是因为浏览器为了应对“挂马”问题,将单进程变为多进程。架构

Sandbox的设计目的是为了让不可信的代码运行在必定的环境内,限制不可信的代码访问隔离区以外的资源。网站

Chrome 浏览器是第一个采用多进程架构的浏览器。 Chrome 浏览器包含浏览器进程、渲染进程、插件进程以及扩展进程。插件进程,好比 flash、java 等进程会与浏览器进程严格隔离。

渲染进程被沙箱(Sandbox)隔离,网页 web 代码内容必须经过 IPC 通道才能与浏览器内核进程通讯,通讯过程会进行安全的检查。

多进程相比于单进程,在发生崩溃时,多进程浏览器只会崩溃当前页面,而单进程浏览器则会崩溃整个浏览器进程。

2.3 恶意网址拦截

恶意网址拦截的原理通常都是经过浏览器周期性的从服务器端获取一份最新的恶意网站黑名单,对于用户访问的网址进行一个验证,判断是否属于此黑名单网址。

常见恶意网址分类:

  • 挂马网站:一般包含恶意的脚本如JavaScript或Flash,经过浏览器漏洞执行shellcode,植入木马
  • 钓鱼网站:经过模仿其余知名网站的类似页面来欺骗用户

目前防护手段:

  • PhishTank免费提供恶意网址黑名单,且频繁更新
  • Google公开其内部的SafeBrowsing API
  • 主流浏览器支持EV SSL证书,加强对安全网站的识别

2.4 浏览器安全的发展

  • 微软在IE 8中推出了XSS Filter功能,对抗反射型XSS(跨站脚本攻击):当用户访问的URL中包含了XSS攻击的脚本时,IE会修改其中的关键字符使攻击没法完成,并弹出提示框
  • Firefox推出CSP(内容安全策略):有服务器返回一个HTTP头,并在其中描述页面应遵循的安全策略,因为XSS攻击在没有第三方插件的帮助下,没法控制HTTP头,因此这项措施是可行的

2.5 小结

浏览器的安全是以同源策略为基础的,加深理解同源策略,才能把握浏览器安全的本质。

相关文章
相关标签/搜索