前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浏览器安全(下)

浏览器安全(下)

原创
作者头像
醉酒鞭名马
修改于 2020-06-14 15:46:36
修改于 2020-06-14 15:46:36
1.8K2
举报

上篇文章从web页面安全的角度分析了浏览器的同源策略,XSS跨站脚本攻击和CSRF跨站请求伪造的攻防方式,本节课将从浏览器稳定性和网络安全的视角分析浏览器的安全

浏览器安全
浏览器安全

浏览器进程安全

在浏览器渲染(进程视角)这篇文章中,分析了浏览器架构演进过程及原因,主要是考虑的原因是从浏览器的稳定性出发,

在架构升级过程中浏览器的安全漏洞直接影响着操作系统的安全,所以浏览器的安全至关重要。

浏览器架构
浏览器架构

与XSS,CSRF攻击的区别

  1. XSS/CSRF攻击是利用客户端脚本或服务器漏洞,获取并利用用户在站点的身份信息,进行模拟用户身份,盗取用户信息等恶意行为,无法对操作客户端操作系统进行攻击
  2. 浏览器的漏洞是可以入侵到浏览器进程内部,穿透浏览器,在客户端操作系统上安装恶意软件,监听用户信息输入,盗取用户磁盘文件信息

浏览器进程漏洞与XSS/CSRF攻击区别
浏览器进程漏洞与XSS/CSRF攻击区别

通过上图可以看出来,黑客主要是从渲染进程做为攻击入口,利用操作系统开放给浏览器系统调用,对操作系统发起攻击,接下来看一下浏览器是如何利用安全沙箱技术保护操作系统安全

安全沙箱

在浏览器的多进程架构中利用了进程隔离和引入了安全沙箱技术,浏览器的功能主要是由浏览器内核和渲染内核完成,内核工作如下:

浏览器内核:对进程的管理,与操作系统的交互,获取用户的输入及图像输出(浏览器的主进程、网络进程、GPU进程、GUI、文件等)

渲染内核:解析执行脚本,合成图像,与浏览器内核交互(DOM解析、CSS解析、脚本执行、合成图像)

安全沙箱又是什么呢?

渲染进程是攻击的入口,如果渲染进程存在系统级别的漏洞,有可能通过渲染进程的控制权限获得操作系统的控制权限。如果一个站点发起了恶意程序下载,网络进程下载后并不执行,只有渲染进程对文件或程序进行执行时(解析dom、css,脚本执行等)才会真正的发起攻击,所以渲染进程和操作系统之间必须建立安全的隔离机制,黑客获取渲染进程的权限无法获取之外的任何权限,这就是安全沙箱的作用。

安全沙箱
安全沙箱

接下来看浏览器是如何设计安全沙箱,及带来的影响:

安全沙箱最小的保护单位是进程,浏览器将渲染进程封装在安全沙箱内,使得渲染进程不能直接操作缓存文件数据、网络数据、用户交互等,这些操作都会直接或间接的调用了操作系统的API,浏览器将其封装在浏览器内核中。

持久数据读写

渲染进程有对cookie及文件上传下载需求,而安全沙箱使渲染进程无法直接访问文件系统,在浏览器多进程架构模型中浏览器将读写文件的操作封装在浏览器内核中,通过进程间通信将结果发送给渲染进程,具体表现如下:

  • 浏览器内核负责对网络下载的文件的缓存及读取
  • 浏览器对cookie数据的统一管理

网络读写

安全沙箱的保护,渲染进程不能直接访问网络,需要通过浏览器内核请求下载:

  • 浏览器内核检查渲染进程请求url权限(如xhr、fetch的跨站请求)
  • 检查通过浏览器内核通过网络进程下载数据,通过IPC将数据传递给渲染进程

用户交互

浏览器的GUI是操作系统提供给应用程序界面(窗口句柄)的一个实现,浏览器应用程序可以在窗口句柄绘制,接受用户输入等消息。操作系统利用窗口句柄将用户输入和UI应用程序建立数据交互链接。

由于安全沙箱,窗口句柄不能直接被渲染进程访问,所以渲染进程需要如下改进:

  • 由浏览器内核负责位图输出显示(渲染进程只负责渲染合成位图然后发送给浏览器内核)
  • 由操作系统将用户输入传递给浏览器内核(限制渲染进程直接与操作系统交互,防止监控用户输入的能力),浏览器内核根据当前界面状态判断如何调度事件
    • 焦点位于页面,则浏览器内核将输入事件转发给渲染进程
    • 焦点位于地址栏菜单栏等,则输入事件会被浏览器主进程处理

站点隔离

浏览器早期多进程架构中,是按照标签页来划分渲染进程,如果一个标签页嵌套了很多站点的iframe,按照标签页划分渲染进程会导致页面内的iframe共用渲染进程数据,有可能受到XSS的攻击,嵌入恶意站点的iframe,盗取当前站点用户数据。

在浏览器渲染进程视角那篇文章里,讲了什么是同一站点(协议相同、根域名相同),站点隔离就是浏览器将同一站点分配在同一渲染进程中。之所以使用站点隔离的原因如下:

  • 防止进程对操作系统的影响:处理器的架构使操作系统有两个A级漏洞(幽灵、熔毁),黑客可以通过漏洞入侵到进程内部,如果不存在安全沙箱的保护下,则可以通过进程对操作系统发起攻击
  • 防止进程之间相互数据泄露:防止页面内嵌入恶意站点iframe读取当前站点渲染进程的数据,所以将不同的站点分配在不同进程中,做到内容数据隔离,互不影响。

上诉分析了渲染进程的重要地位,从安全角度考虑浏览器多进程架构把渲染进程与操作系统分隔,将持久数据的读写、网络读写、用户交互的操作封装在浏览器内核中,由浏览器内核与操作系统交互,把不同的站点分配在独立的渲染进程中,保证不同站点互不影响。


接下来从浏览器网络资源请求角度分析安全性

浏览器网路安全

在客户端和服务器之间,数据会经过用户电脑、wifi路由器、运营商机房和目标服务器,由于HTTP的明文传输,在每个环节都有可能被黑客窃取、伪造和篡改。于是便有了https,在http协议中加入了安全层,这就是https

数据劫持
数据劫持
HTTPS
HTTPS

https的几种实现方式:

对称加密

加解密使用相同的密钥,客户端在传输数据前需要与服务端协商加密方式,获得加解密的密钥

对称加密
对称加密
  • 安全层协商过程:
    • 客户端传递可用加密方法和客户端随机数
    • 服务端接确认加密方法,返回加密方法和服务端随机数
  • 加密传输:
    • 客户端和服务端利用随机串合成密钥,使用密钥加密数据发送
    • 服务端也利用相同的方法合成密钥解密数据

优势:加解密效率高,速度快

劣势:传输随机数、加密方法是明文的,合成密钥的算法是公开的,所以黑客依然可以截获破解

非对称加密

对称加密的不同之处是,非对称加密由两把密钥,数据只能使用一把密钥加密,另外一把密钥解密,把客户端可以获取到的密钥称为公钥,保存在服务端的密钥称为私钥,私钥不公开,公钥是公开的

非对称加密
非对称加密
  • 安全层协商过程:
    • 客户端发送加密列表给服务器
    • 服务器确认加密列表并派发公钥
  • 传输数据:
    • 客户端使用公钥加密数据
    • 服务端使用私钥解密数据

优势:安全级别比对称加密要高,在客户端向服务端发送数据阶段即使黑客截获数据也无法通过公钥解密

劣势:

  1. 加密要传输的大数据效率很低,影响到加解密速度。
  2. 服务端发送给客户端使用私钥加密,客户端使用公钥解密,但是公钥的传输是明文的,黑客依然可以获取服务端返回的数据

对称与非对称加密结合

在传输数据阶段依然使用对称加密保证数据加密效率,但加密的密钥是使用非对称加密来传输

非对称+对称加密
非对称+对称加密
  • 安全层协商阶段:
    • 客户端向服务端发送对称加密套件列表、非对称加密套件列表、客户端随机数
    • 服务端确认对称和非对称加密方法,生成服务端随机数,并派发公钥一并返回
    • 客户端保存公钥,生成新的随机数并用公钥加密,发送给服务端
    • 服务端接收后使用私钥解出客户端新的随机数,并返回确认
  • 传输数据阶段:
    • 客户端利用三组随机数合成密钥,加密传输数据
    • 服务端同样利用三组随机数解密数据

优势:解决了大数据非对加解密效率的问题,也解决了密钥在传输过程中被破解的问题

劣势:客户端无法证明服务端可靠。公钥和私钥都依赖服务端,如果黑客使用DNS劫持站点,将IP指向重定向到黑客服务器,那将黑客完全可以模拟一整套的公私钥,对于客户端来说并不知道是服务器

数字证书验证

数字证书的主要作用是验证服务端可信,携带服务器的公钥给客户端。它是由第三方权威机构(CA),由CA向服务器颁发合法证书,服务端把数字证书发送给客户端,客户端进行验证服务端是否可信

数字证书
数字证书

使用数字证书验证的流程:

  • 申请证书阶段:
    • 服务端准备信息:准备公私钥,将公钥、公司、站点等信息提交给CA申请证书
    • CA验证服务器派发证书:CA通过线上/线下验证服务器提交信息,验证通过则CA向服务器签发认证数字证书(包括CA的签名,CA的信息、及服务端提交的信息,有效时间,证书序列号等)
  • 安全层协商阶段:
    • 客户端发送对称加密列表、非对称加密列表、客户端随机数
    • 服务端确认对称、非对称加密套件,一并返回服务端随机数、数字证书
    • 客户端验证数字证书
      • 客户端使用内置的CA验证数字证书
      • 证书验证通过,使用证书中携带的公钥+客户端生成的随机数发送给服务端
      • 服务端接收消息使用私钥解出随机数,返回确认信息
  • 传输数据阶段(同对称和非对称加密混合方式)

以上通过引入了第三方权威机构为服务器签发数字证书,服务端利用数字证书的方式传递公钥,操作系统通过内置的CA根证书验证证书,通过公钥非对称加密的方式生成加密密钥,通过对称方式传递数据,这就是最终https的方案。

思考题:如果根证书被篡改了呢?

(完)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
作者啥时候出个服务器安全讲解?
作者啥时候出个服务器安全讲解?
11点赞举报
感谢关注
感谢关注
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
浏览器工作原理 - 安全
浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同源之间要相互访问或者操作 DOM,会有一套基础的安全策略制约,即同源策略。
Cellinlab
2023/05/17
6070
浏览器工作原理 - 安全
浏览器原理学习笔记07—浏览器安全
协议、域名 和 端口 都相同的两个 URL 同源,默认可以相互访问资源和操作 DOM,两个不同源之间通过安全策略制约隔离 DOM、页面数据和网络通信来保障隐私和数据安全。
CS逍遥剑仙
2020/05/02
1.7K0
阶段七:浏览器安全
32 | 同源策略:为什么XMLHttpRequest不能跨域请求资源–Web页面安全 浏览器安全分为三大块:Web页面安全、浏览器网络安全、浏览器系统安全。 同源策略 页面中最基础、最核心的安全策略:同源策略(same-origin policy) 如果两个URL协议相同、域名相同、端口相同,就称为这两个URL同源 同源策略就是说:相同源之间可以操作DOM、读取互相之间的Cookie、indexDB、locationStorage等页面数据以及网络层面共享。 也就解释了为什么同源策略限制了X
六个周
2022/10/28
5020
HTTP向HTTPS演化的过程
HTTP它出现的比较早,现在已经有HTTP/2.0了,但是使用最普遍的还是HTTP/1.1。
用户7386338
2020/05/29
4230
HTTPS终于搞懂了
近些年来,越来越多的网站使用 HTTPS 协议进行数据传输,原因在于 HTTPS 相较于 HTTP 能够提供更加安全的服务。
捡田螺的小男孩
2023/02/22
1K0
HTTPS终于搞懂了
SSL及其加密通信过程「建议收藏」
SSL英文全称Secure Socket Layer,安全套接层,是一种为网络通信提供安全以及数据完整性的安全协议,它在传输层对网络进行加密。它主要是分为两层:
全栈程序员站长
2022/09/07
3.9K1
SSL及其加密通信过程「建议收藏」
HTTPS是如何保证安全的
HTTPS并非是应用层一个新的协议,通常 HTTP 直接和 TCP 通信,HTTPS则先和安全层(SSL/TLS)通信,然后安全层再和 TCP 层通信。
木子星兮
2020/07/17
9540
HTTPS是如何保证安全的
HTTPS介绍 --- 超详细保姆级知识讲解
随着互联网的快速发展,网络安全问题日益凸显。在互联网上传输敏感信息、进行在线交易和共享个人数据时,确保数据的安全性和隐私保护成为了至关重要的任务。为了解决这些问题,HTTPS(超文本传输安全协议)应运而生,成为了保护网络通信的重要一环。
小灵蛇
2024/10/10
2300
HTTPS介绍 --- 超详细保姆级知识讲解
从场景学习常用算法
摘要算法:通过输入任意长度内容柔和而产生固定长度的伪随机输出内容的算法,它主要 的作用是用来验证数据的完整性
醉酒鞭名马
2020/07/05
2.4K0
从场景学习常用算法
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
HTTPS(Hypertext Transfer Protocol Secure)是一种安全的网络通信协议,它在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS的安全基础是SSL/TLS协议,它存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法,被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。由于HTTPS协议内容都是按照文本的方式明文传输的,就导致在传输过程中出现一些被篡改的情况。
枫叶丹
2024/07/12
1650
【在Linux世界中追寻伟大的One Piece】HTTPS协议原理
【网络原理】深入理解HTTPS协议
HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况.
用户11369350
2025/05/04
1410
【网络原理】深入理解HTTPS协议
HTTPS是如何保证加密可靠
HTTP与HTTPS是开发人员最常接触的网络协议,通常在进行API请求的时候,我们会用到HTTP协议。但是众所周知HTTP是明文传输,所以是不够安全的,我们可以通过各种各样的网络抓包工具(如whistle/Fiddler)去“捕获”其中的具体内容,所以就引出了基于HTTP更加安全的HTTPS协议。
腾讯IVWEB团队
2020/06/29
9430
HTTP 和 HTTPS 的区别(面试常考题)「建议收藏」
无论是在校学习还是找工作的时候,老师和面试官都问过同学 HTTP 和 HTTPS 的区别。平时上网的时候也没有关注这个问题,只是知道计算机网络里 HTTP 的概念,所以最近才查资料好好补补这一块。其实这一块的知识延伸很广,如果之前不太了解加密算法和 SSL 协议,可以在学习了这个问题的基础上再做研究。
全栈程序员站长
2022/09/07
5400
TLS协议学习笔记
说起TLS(Transport Layer Security 传输层安全协议),可能有点陌生,但是说起HTTPS,大家应该都知道,我们现在浏览网页基本上都是HTTPS的。HTTPS就是加密的HTTP,HTTP基于明文传播,直接使用HTTP的话内容很容易被窃取。HTTPS则对内容进行了一层加密,避免了内容被窃取和篡改的可能性,如下图所示。
roper
2018/07/02
2.4K1
TLS协议学习笔记
理解HTTPS
HTTPS其实是有两部分组成:HTTP + SSL / TLS,也就是在HTTP上又加了一层处理加密信息的模块。也就是说使用HTTPS协议之后在网络上传输的数据是加密的密文,即便进行拦截后没有密钥进行解密的话也就是一串乱码。端口号是443
见得乐
2022/07/20
3290
理解https中的安全及其实现原理
Google的一份网络上的 HTTPS 加密[1]透明报告(数据截至2022年1月)中指出HTTPS 连接的普及率在过去几年激增,互联网上排名前 100 位的非 Google 网站HTTPS 使用情况为:97%的站点默认启用HTTPS,100%的站点支持HTTPS。
你大哥
2022/03/14
5730
理解https中的安全及其实现原理
【HTTP】HTTPS TLS 1.2
在个人过去的读书笔记中已经介绍过一次,在这一篇文章中介绍了HTTP1.1的缺点,以及SSL、TLS的历史,之后介绍了有关SSL加密的主要加密方案:公开密钥加密 和 共享密钥加密,最后简单介绍了HTTPS的交互过程,但是书中的过程比较粗,这节我们讲细一点点。
阿东
2022/09/12
1.3K0
一篇文章搞定HTTPS
其实HTTPS就是在HTTP进行了加密处理,HTTP协议的传输都是明文传输的,这导致传输的过程被黑客截取,进行信息的篡改,造成损失。一般HTTPS=HTTP+TSL/SSL
用户11319080
2025/05/30
940
一篇文章搞定HTTPS
对称加密和非对称加密
1.什么是对称加密,非对称加密 对称加密是指加解密使用的是同样的密钥 非对称加密是指加解密使用的密钥不同。
yaphetsfang
2020/07/30
1.7K0
对称加密和非对称加密
Android面试题之HTTPS的工作流程和原理
5、网页以加密的方式传输,用协商的对称加密算法和密钥加密,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改。
AntDream
2024/06/27
2200
Android面试题之HTTPS的工作流程和原理
相关推荐
浏览器工作原理 - 安全
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档