第二篇 客户端脚本安全
第2章 浏览器安全
2.1 同源策略Same Origin Policy
浏览器的同源策略,限制了来自不同的“document”或脚本,对当前“document”读取或设置某些属性
- 对于JavaScript,影响“源”的因素有:host(域名或IP地址,如果是IP地址则看做一个根域名)、子域名、端口、协议
- 对于XMLHttpRequest,它可以访问来自同源对象的内容,不能跨域访问资源
除了DOM、Cookie、XMLHttpRequest会受到同源策略的限制外,浏览器加载的一些第三方插件也有各自的同源策略,例如Flash
2.2 浏览器沙箱
挂马:在网页中插入一段恶意代码,利用浏览器漏洞执行任意代码的攻击方式
浏览器的多进程架构,如Google Chrome的主要进程分为:浏览器进程、渲染进程、插件进程、扩展进程。
渲染引擎由Sandbox沙箱隔离,沙箱泛指资源隔离类模块,设计目的一般是为了让不可信任的代码运行在一定的环境中,限制不可信任的代码访问隔离区之外的资源。如果一定要跨越Sandbox边界产生数据交换,则只能通过指定的数据通道,比如经过封装的API来完成,在这些API中会严格检查请求的合法性
多进程好处:相对于单进程,在发生崩溃时,多进程只会崩溃当前Tab页,而单进程浏览器则会崩溃整个浏览器进程
浏览器所加载的一些第三方插件不受Sandbox管辖,这里可能出现漏洞
2.3 恶意网址拦截
目前各个浏览器的拦截恶意网址的功能都是基于“黑名单”的
原理:一般都是浏览器周期性地从服务器端获取一份最新的恶意网址黑名单,如果用户上网时访问的网址存在于此黑名单中,浏览器就会弹出一个警告页面
常见的恶意网址分为:
- 挂马网站:通常包含有恶意的脚本如JavaScript或Flash,通过利用浏览器的漏洞(包括一些插件、控件漏洞)执行shellcode,在用户电脑中植入木马
- 钓鱼网站:通过模仿知名网站的相似页面来欺骗用户
要识别这两种网站,需要简历许多基于页面特征的模型,而这些模型放在客户端会让攻击者得以分析、研究并绕过这些规则。同时收集用户访问的里十几里路也侵犯隐私且数量庞大
基于此浏览器主要通过黑名单,谷歌公开内部API供他人接入获取其恶意网址库
主流浏览器支持EV SSL证书(Extended Validation Secure Socket Layer Certificate增强型安全套接字层证书),以增强对安全网站的识别
2.4 高速发展的浏览器安全
不同浏览器推出许多安全策略,如微软在IE 8中推出XSS Filter功能,用以对抗反射型XSS,Firefox在Firefox4中推出了Content Security Policy(CSP),其做法是由服务器返回一个HTTP头,并在其中描述页面应该遵守的安全策略
2.5 小结
浏览器的安全以同源策略为基础,加深理解同源策略才能把握住浏览器安全的本质
比较重要的问题:恶意网址检测,插件安全