2018-08-24 创建
1. 同源策略是一种约定。浏览器提出源(Origin)这一概念,防止浏览器的页面行为发生混乱。
页面内存放JS文件的域并不重要,重要的是加载JS页面所在的域是什么,JS文件的源就是什么。
带src标签的<script>,<img>,<iframe>,<link>等标签都可以跨域加载资源。他们每次加载时实际上浏览器发起了GET请求。
W3C指定了XMLHttpRequest跨域访问标准。它通过目标域返回的HTTP头来授权是否允许跨域访问。因为一般HTTP头对于JS来说无法控制。
浏览器加载的第三方插件也有自己的同源策略。比如flash主要通过目标网站的crossdomain.xml文件判断是否允许当前“源”的flash跨域访问目标资源。比如http://www.qq.com/crossdomain.xml。
Flash9以后实现了MIME检查确认crossdomain.xml是否合法。
IE8中的CSS跨域漏洞,前面的<script>等都只能加载资源,而这个漏洞可以读取内容,绕过了同源策略。
2. 浏览器沙箱
挂马:在网页中插入一段恶意代码,利用浏览器漏洞执行代码。挂马是浏览器面对的一个主要威胁。
Chrome采取了多进程架构。分为浏览器进程、渲染进程、插件进程、扩展进程。
渲染引擎由sandbox隔离,网页代码要与浏览器内核进程、操作系统通信都要通过IPC channel。
IE8也采取了多进程架构。
虽然浏览器有多进程和sandbox,但是浏览器加载的一些第三方插件却往往不受sandbox管辖。很多被攻克的浏览器都是由于加载的第三方插件出现安全漏洞所导致的。
3. 恶意网址拦截
原理就是浏览器周期性地从服务器获得最新的恶意网址名单。
常见的恶意网址有挂马网站和钓鱼网站。
PhishTank是免费提供恶意网址黑名单的组织之一。Google也公开了SafeBrowsing API.
EV SSL证书(Extended Validation)