当前位置: 首页 > Web前端 > JavaScript

浏览器工作原理与实践(八)—浏览器安全

时间:2023-03-27 11:12:07 JavaScript

系统安全浏览器架构单进程架构的浏览器是不稳定的,只要出现任何一个,比如页面卡顿或者浏览器崩溃,都会影响到整个浏览器.浏览器本身的漏洞也是单进程浏览器的问题。如果漏洞不被修复,黑客可以通过恶意页面向浏览器注入恶意程序,例如利用缓冲区溢出。但是,与XSS注入脚本不同,XSS攻击只是将恶意JS注入页面。虽然cookie数据可以被窃取,但是操作系统是无法被攻击的。浏览器漏洞攻击可以侵入浏览器进程内部,可以读取和修改浏览器进程内部的任何内容,也可以穿透浏览器。在操作系统上安装恶意软件,监听用户键盘输入信息,读取硬盘内容,所有数据都不安全。现代浏览器采用多进程架构,将渲染进程与浏览器主进程分离。主要分为两个核心模块:浏览器内核(网络进程、主进程、GPU进程)和渲染内核(渲染进程)。网络资源是通过浏览器内核下载的。下载完成后,通过IPC(浏览器内核和渲染进程通过IPC通信)将资源交给渲染进程,然后由渲染进程对这些资源进行分析绘制成一张最终的图片。但是渲染进程并不负责在界面上显示图片,而是将生成的图片发送给浏览器内核模块,由浏览器内核负责显示图片。安全沙箱由于渲染过程需要进行DOM解析、CSS解析、网络图片解码等操作,如果渲染过程存在系统级漏洞,上述操作可能会让恶意站点获得渲染的控制权限进程,然后获得操作系统的控制权对用户来说是非常危险的。如果下载了恶意程序但不执行,则不会生效。因此,需要在渲染进程和操作系统之间建立一堵墙。即使渲染进程存在漏洞,但有一堵墙,黑客将无法获得渲染进程之外的任何操作权限。将渲染进程与操作系统分隔开的墙称为安全沙箱。浏览器的安全沙箱利用操作系统提供的安全技术。使渲染进程在执行过程中无法访问或修改操作系统的数据。当渲染进程要访问资源时,必须通过浏览器内核实现,然后将访问结果通过IPC发送给渲染进程。渲染过程:HTML解析、CSS解析、图片解码、JS执行、布局、绘制、XML解析。浏览器内核:cookie存储、缓存存储、网络请求、文件读取、下载管理、SSL/TSC、浏览器word窗口管理。渲染过程需要沙箱的保护。它不具备读写系统的功能(读写本地文件、发起请求、调用GPU接口),所以与系统交互相关的功能都交给了浏览器内核来实现。由于渲染进程使用了??安全沙箱,无法在渲染进程内部直接与操作系统进行交互,因此在浏览器中实现了持久化存储、网络访问、用户交互等一系列与操作系统的交互功能内核,然后通过IPC与渲染进程进行交互。网络安全HTTPSHTTP传输数据为明文。数据提交到TCP层后,数据会经过用户电脑、wifi路由器、运营商、目标服务器等链路。每个环节的数据都可能被窃取、伪造和篡改。比如用户电脑安装了恶意软件,或者用户不小心连接了wifi钓鱼路由器等。该数据可能会被黑客捕获或篡改。因为HTTP的明文传输是不安全的,限制了网上购物,网上转账等,所以引入了一种加密方案,就是在TCP和HTTP之间加一个安全层(SSL/TLS),数据通过通过安全层将被加密或解密。加密HTTP请求并解密接收到的HTTP内容。对称加密对称加密:加密和解密都使用相同的密钥。https需要浏览器和服务器先协商好加密方式和密钥。浏览器发送一个支持的密码套件列表和一个随机数client-random,服务器从列表中选择一个密码套件+随机数server-random给浏览器。双方返回确认信息。然后他们混合客户端随机和服务器随机生成密钥主服务器。可以进行加密传输。但是由于client-random和server-random的传输过程是明文,合成密钥算法是公开的,数据还是可以被破解的。非对称加密非对称加密:加密算法有2个密钥,A和B。用A加密只能用B解密,反之亦然。服务器会将其中一个密钥(公钥)以明文形式发送给浏览器,服务器留下的那一个称为密??钥。服务器有一个用于加密浏览器的公钥和一个用于解密http数据的私钥。用公钥加密的数据只能用私钥解密,即使公钥和数据被截获,加密也无法解密。效率低下,影响加解密速度,也影响页面打开速度。无法保证服务器提供的数据的安全性。浏览器可以用公钥加密,服务器端只能用私钥加密。私钥加密只能用公钥解密,但是黑客也可以获得公钥,可以解密服务器传输的数据。对称和不对称与对称和不对称结合使用。传输的数据使用对称加密进行加密,对称加密的密钥使用非对称加密进行传输。浏览器向服务器发送对称密码套件列表、非对称密码套件列表和客户端随机数。服务端保存client-random,选择对称加密和非对称加密套件生成server-random+公钥发送给浏览器。浏览器保存公钥,生成pre-master随机数,用公钥加密pre-master发送给服务器。服务器使用私钥解密pre-master返回的确认信息,然后浏览器和服务器通过client-random、server-random、pre-master相同的方法生成对称密钥。pre-master使用公钥加密传输。黑客无法获取pre-master、生成密钥、破解数据。添加数字证书黑客可能会将官网IP地址的DNS劫持替换为黑客的IP,那么我们访问的就是黑客的服务器。黑客自己实现公钥和私钥。要证明服务器就是要访问的服务器,需要有权威机构(CA)颁发的证书(数字证书)。数字证书:向浏览器证明服务器的身份,包含服务器公钥。服务器并没有直接将公钥返回给浏览器,而是返回了一个数字证书,其中包含了对公钥浏览器的额外证书验证操作,验证通过后再继续