1. 同源策略(Same Origin Policy)
同源策略一种约定,是浏览器安全的基础也是其最核心的安全功能。
它限制了来自不同源的“document”或脚本对当前“document”读取或设置某些属性。可以保护网站数据不被恶意窃取。
很多时候浏览器实现的同源策略是隐性透明的,当出现由其导致的问题时会没有出错提示的。
扩展阅读:
“一开始以为是语法或者是同步异步的问题,不停地修改代码,折腾了几个小时。还是毫无进展。这时候心如死灰的我打开了浏览器的控制台,发现报了这个错误。”
JavaScript中识别源的因素有:Host、子域名、端口、协议。
比如以http://store.cm.com/a/details.html为例来区分以下链接是否同源:
①http://store.cm.com/b/c/index.html --> 同源
②https://store.cm.com/a/home.html --> different protocol
③http://store.cm.com:80/a/user.html --> different port
④https://out.cm.com/c/one.html --> different host
浏览器中<script>、<img>、<iframe>、<link>等标签都可以跨域加载资源,不受同源策略限制。
而且在AJAX(Asynchronous Javascript And XML)开发中XHR(XMLHttpRequest)受同源策略限制不能跨域访问资源。不同于XHR,通过src属性加载的资源不受同源策略限制,但浏览器限制JavaScript权限,使其不能读/写/返回。
对于浏览器而言,除了DOM(Document Object Model,W3C万维网联盟的标准/定义了访问 HTML 和 XML 文档的标准)、Cookie、XHR会被同源策略限制外,一些第三方插件也有自己的同源策略。比如flash、java applet、silverlight等等。
同源策略一旦被绕过那么基于其制定的安全方案会效果,所以理解同源策略对于理解、防止客户端脚本攻击有重要意义。
扩展阅读:
2. 浏览器沙箱/沙盒 Sandbox
对于沙盒模型首先需要知道浏览器多进程架构的概念。
进程:cpu资源分配的最小单位。
现今的绝大部分浏览器都是多进程架构,即每个浏览器Tab就是一个单独的浏览器进程,系统给它分配了单独的资源(CPU、内存)。浏览器的多进程架构有以下优点:
①避免因单个Tab的不响应或者崩溃而影响整个浏览器的稳定性,特别是对用户界面的影响;
②当第三方插件崩溃时不会影响页面或者浏览器的稳定性,这时因为第三方插件也被使用单独的进程来运行;
③方便了安全模型的实施,也就是说沙箱模型是基于多进程架构的。
扩展阅读:
沙盒简介:浏览器沙箱模型
“沙盒”技术则是发现可疑行为后让程序继续运行,当发现的确是病毒时才会终止。“沙盒”技术的实践运用流程是:让疑似病毒文件的可疑行为在虚拟的“沙盒”里充分表演,“沙盒”会记下它的每一个动作;当疑似病毒充分暴露了其病毒属性后,“沙盒”就会执行“回滚”机制:将病毒的痕迹和动作抹去,恢复系统到正常状态。
对于一定要跨越沙盒边界进行数据交换那么只能通过指定的数据通道,比如封装API来实现。
此外沙盒依赖于操作系统提供的技术,所以在不同的操作系统上沙盒的实现是不同的。
以下为Chrome浏览器的架构示例:
我们可以从中看到谷歌的渲染引擎是被放在了层层沙盒之中运行,并且当它想要与浏览器内核进程通信或操作系统通信时都需要通过IPC channel(进程间的通信),在其中会进行一些安全检查。当IPC中的安全漏洞有着严重的后果(文件盗取,沙箱逃逸,远程代码执行)。
3. 恶意网址拦截
即浏览器周期性的从服务器获得一份最新恶意网址的黑名单,并在用户试图进入这些网址时进行拦截并提醒用户。
恶意网站分两种:
①挂马网站:通常包含恶意JavaScript或flash脚本,利用浏览器漏洞在用户电脑里植入木马;
②钓鱼网站:模仿知名网站欺骗用户。
想要真正识别这些网站需要收集用户数据和建立基于页面特征的模型,基于这两个原因,恶意网址黑名单一般由一些有实力的浏览器厂商提供(比如微软,Google)或是一些由志愿者提供黑名单的并免费开放的组织(比如PhishTank)提供。
除了恶意网址黑名单外主流浏览器都支持了EV SSL(Extended Validation SSL)证书来保障用户网络安全。该证书是全球数字证书颁发机构与浏览器厂商一起打造的增强型证书。符合该证书的网站其浏览器地址栏会变成绿色。
扩展阅读:
EV SSL证书属于扩展验证型,不仅验证企业型证书需要验证的资料,还要进行扩展验证,遵循全球统一的严格身份验证标准,数据加密、绿色地址栏显示企业名称,是目前业界安全级别最高的SSL证书。目前大型的互联网金融以及涉及到交易支付的网站,建议使用EV SSL证书。
除了以上提及内容外,关于浏览器安全我们还需注意各种浏览器自身的安全功能,比如IE的XSS Filter和Firefox提出的CSP(Content Security Policy)安全策略。
除此之外,还需注意浏览器提供的一些对用户友好功能和各式各样功能强大的扩展或是第三方插件。扩展和插件可能本身存在漏洞或者带有恶意行为,而且其权限都高于页面JavaScript的权限,比如可以进行一些跨域网络请求等等。