浏览器安全策略介绍
0. 前言
昨天和学长学姐聊了一下,他们不太建议我学的太基础,功利地说,短期内用不着。他们也强调了算法地重要性,确实研究生面试或者找工作都能用得着。
那就先开始对Web安全的学习了。由于计算机网络难度还挺大,往年成绩区分度也挺大,因此再阅读一下那本书。
目前的任务就是《白帽子讲Web安全》和《计算机网络自顶向下》两本书,每晚练一下算法,不能只做简单题!!!
1. 何为浏览器安全?
浏览器,就是Chrome、Firefox、IE等等客户端软件。那浏览器安全与Web安全有什么关系呢?(作为初学者,我真的不太清楚TAT)
在学习《图解HTTP》时,我学习过WebSocket和针对Web的攻击,百度了一下,Web即World Wide Web,也就是咱们所熟悉的万维网,它是一种基于Internet的信息系统。就像我们平常浏览的网页、你现在看到的博客,又叫做Web Page,是基于网站(WebSite)的,都属于包含关系。
而浏览器呢,则是用来浏览网页的程序。
相信区分了浏览器和Web的程序后,浏览器安全和Web安全的区别也就不费吹灰之力了。
在《白帽子讲Web安全》这本书中,浏览器安全在客户端脚本安全部分里,属于Web安全的一部分。
2. 浏览器安全功能
随着浏览器的应用增多,浏览器的安全越来越重要,也推出了一系列的安全功能。
2.1 同源策略
同源策略是浏览器最基本的安全功能,可以说Web是构建在同源策略基础之上的。下面,我们就一起看下,什么是同源策略?
同源策略:限制来自不同源的“document”或脚本,对当前“document”的访问和操作。
这短短的一句话,实际上有两个迷惑我的地方。
- 什么是源?怎么就来自不同源了?
- document是个啥?咋还访问document了?
基础不牢,地动山摇,没学过Web编程的我哭了!面向百度学习一波。
Document
在面向百度的学习过程中发现,document是Window对象的一部分,这不重要,重要的是,当浏览器载入HTML文档时,这个HTML文档就会成为Document对象,可以进行一系列操作。
源
URL | Outcome | Reason |
---|---|---|
http://company.com/dir/other.html | Success | |
http://company.com/dir/theother.html | Success | – |
https://company.com/dir/theother.html | Failure | Different protocol |
http://company.com:81/dir/theother.html | Failure | Different port |
https://school.com/dir/theother.html | Failure | Different host |
作者在书里给了同源和不同源的例子,总的来看还是很好理解的,同源即host、端口、协议相同,简单的说也就是.com及之前的相同。
现在这两个基本概念搞清楚之后,就可以来直面同源策略了。
同源策略并不是简单的一刀切,它在限制跨域访问的同时,也为一些特殊的插件、标签保留着跨域加载资源的权限。
- 可跨域访问资源:
同源策略对跨域资源的访问做出了严格的限制,以防出现数据泄露等严重安全问题,但是它的神秘我还没能体会到。
2.2 多进程架构和浏览器沙箱
这两种策略的目的是为了抵御一种叫作“挂马”的攻击方式。
身为小白的我,没怎么懵逼,挂马挂马,挂木马呗。
挂马:在网页里插入恶意代码,利用浏览器漏洞执行任意代码。
这种攻击方式我在二向箔的教程里体验过,属于被动攻击,是利用讨论区的一个恶意代码,用户点击之后出现弹窗并发送cookie。
那么多进程架构和浏览器沙箱是怎么对抗这种攻击的呢?
这里直接上定义:
多进程架构即将浏览器各功能模块分开,比如浏览器进程、插件进程、渲染进程等,当一个进程崩溃时,不会影响其他进程。
浏览器沙箱即资源隔离类模块,让不可信任的代码运行在一定的环境中,并限制代码访问的资源和方式。
这里再解释一下浏览器沙箱,沙箱也并不是不能进行数据交换,但要经过严格的安全检查,确保请求的合法性。
2.3 恶意网址拦截
恶意网址拦截其实是很简单的,就是有一个恶意网站的黑名单,浏览器可以定期从服务器获得这个黑名单,当用户访问黑名单中的网站时,浏览器会给出警告。
是不是感觉特别苍白、特别无力???恶意网站可是瞬息万变、无穷无尽的鸭!一个人工维护的黑名单太苍白了。在Secure by default原则中,我们也学习过,使用白名单,系统会更加安全。
So,现在全世界的浏览器厂商和数字证书颁发机构联合了起来,推行了一个叫EVSSL证书的东东,拥有SSL的证书会在浏览器中特别标注出来。
但是,私以为这仍然不是一个很好的解决方案。首先申领证书就需要money,就会产生成本,像一些小型网站就不会为此支付费用。
知己知彼百战不殆,正是因为有了研究安全的人,互联网才变得不安全了。