上篇文章从web页面安全的角度分析了浏览器的同源策略,XSS跨站脚本攻击和CSRF跨站请求伪造的攻防方式,本节课将从浏览器稳定性和网络安全的视角分析浏览器的安全
在浏览器渲染(进程视角)这篇文章中,分析了浏览器架构演进过程及原因,主要是考虑的原因是从浏览器的稳定性出发,
在架构升级过程中浏览器的安全漏洞直接影响着操作系统的安全,所以浏览器的安全至关重要。
通过上图可以看出来,黑客主要是从渲染进程做为攻击入口,利用操作系统开放给浏览器系统调用,对操作系统发起攻击,接下来看一下浏览器是如何利用安全沙箱技术保护操作系统安全
在浏览器的多进程架构中利用了进程隔离和引入了安全沙箱技术,浏览器的功能主要是由浏览器内核和渲染内核完成,内核工作如下:
浏览器内核:对进程的管理,与操作系统的交互,获取用户的输入及图像输出(浏览器的主进程、网络进程、GPU进程、GUI、文件等)
渲染内核:解析执行脚本,合成图像,与浏览器内核交互(DOM解析、CSS解析、脚本执行、合成图像)
安全沙箱又是什么呢?
渲染进程是攻击的入口,如果渲染进程存在系统级别的漏洞,有可能通过渲染进程的控制权限获得操作系统的控制权限。如果一个站点发起了恶意程序下载,网络进程下载后并不执行,只有渲染进程对文件或程序进行执行时(解析dom、css,脚本执行等)才会真正的发起攻击,所以渲染进程和操作系统之间必须建立安全的隔离机制,黑客获取渲染进程的权限无法获取之外的任何权限,这就是安全沙箱的作用。
接下来看浏览器是如何设计安全沙箱,及带来的影响:
安全沙箱最小的保护单位是进程,浏览器将渲染进程封装在安全沙箱内,使得渲染进程不能直接操作缓存文件数据、网络数据、用户交互等,这些操作都会直接或间接的调用了操作系统的API,浏览器将其封装在浏览器内核中。
渲染进程有对cookie及文件上传下载需求,而安全沙箱使渲染进程无法直接访问文件系统,在浏览器多进程架构模型中浏览器将读写文件的操作封装在浏览器内核中,通过进程间通信将结果发送给渲染进程,具体表现如下:
安全沙箱的保护,渲染进程不能直接访问网络,需要通过浏览器内核请求下载:
浏览器的GUI是操作系统提供给应用程序界面(窗口句柄)的一个实现,浏览器应用程序可以在窗口句柄绘制,接受用户输入等消息。操作系统利用窗口句柄将用户输入和UI应用程序建立数据交互链接。
由于安全沙箱,窗口句柄不能直接被渲染进程访问,所以渲染进程需要如下改进:
浏览器早期多进程架构中,是按照标签页来划分渲染进程,如果一个标签页嵌套了很多站点的iframe,按照标签页划分渲染进程会导致页面内的iframe共用渲染进程数据,有可能受到XSS的攻击,嵌入恶意站点的iframe,盗取当前站点用户数据。
在浏览器渲染进程视角那篇文章里,讲了什么是同一站点(协议相同、根域名相同),站点隔离就是浏览器将同一站点分配在同一渲染进程中。之所以使用站点隔离的原因如下:
上诉分析了渲染进程的重要地位,从安全角度考虑浏览器多进程架构把渲染进程与操作系统分隔,将持久数据的读写、网络读写、用户交互的操作封装在浏览器内核中,由浏览器内核与操作系统交互,把不同的站点分配在独立的渲染进程中,保证不同站点互不影响。
接下来从浏览器网络资源请求角度分析安全性
在客户端和服务器之间,数据会经过用户电脑、wifi路由器、运营商机房和目标服务器,由于HTTP的明文传输,在每个环节都有可能被黑客窃取、伪造和篡改。于是便有了https,在http协议中加入了安全层,这就是https
https的几种实现方式:
加解密使用相同的密钥,客户端在传输数据前需要与服务端协商加密方式,获得加解密的密钥
优势:加解密效率高,速度快
劣势:传输随机数、加密方法是明文的,合成密钥的算法是公开的,所以黑客依然可以截获破解
与对称加密的不同之处是,非对称加密由两把密钥,数据只能使用一把密钥加密,另外一把密钥解密,把客户端可以获取到的密钥称为公钥,保存在服务端的密钥称为私钥,私钥不公开,公钥是公开的
优势:安全级别比对称加密要高,在客户端向服务端发送数据阶段即使黑客截获数据也无法通过公钥解密
劣势:
在传输数据阶段依然使用对称加密保证数据加密效率,但加密的密钥是使用非对称加密来传输
优势:解决了大数据非对加解密效率的问题,也解决了密钥在传输过程中被破解的问题
劣势:客户端无法证明服务端可靠。公钥和私钥都依赖服务端,如果黑客使用DNS劫持站点,将IP指向重定向到黑客服务器,那将黑客完全可以模拟一整套的公私钥,对于客户端来说并不知道是服务器
数字证书的主要作用是验证服务端可信,携带服务器的公钥给客户端。它是由第三方权威机构(CA),由CA向服务器颁发合法证书,服务端把数字证书发送给客户端,客户端进行验证服务端是否可信
使用数字证书验证的流程:
以上通过引入了第三方权威机构为服务器签发数字证书,服务端利用数字证书的方式传递公钥,操作系统通过内置的CA根证书验证证书,通过公钥非对称加密的方式生成加密密钥,通过对称方式传递数据,这就是最终https的方案。
思考题:如果根证书被篡改了呢?
(完)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。