浏览器安全可以分为三大块——Web 页面安全、浏览器网络安全和浏览器系统安全

在web页面中的安全策略中最基础、最核心的安全策略:同源策略(Same-origin policy)。

Web 页面安全

同源策略(Same-origin policy)

如果两个 URL 的协议、域名和端口都相同,我们就称这两个 URL 同源。浏览器默认两个相同的源之间是可以相互访问资源和操作 DOM 的。两个不同的源之间若想要相互访问资源或者操作 DOM,那么会有一套基础的安全策略的制约,我们把这称为同源策略。

主要表现

  • DOM 层面

同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作。

  • 数据层面

同源策略限制了不同源的站点读取当前站点的 Cookie、IndexDB、LocalStorage 等数据。

  • 网络层面

同源策略限制了通过 XMLHttpRequest 等方式将站点的数据发送给不同源的站点

安全和便利性

不过安全性和便利性是相互对立的,让不同的源之间绝对隔离,无疑是最安全的措施,但这也会使得 Web 项目难以开发和使用。因此我们就要在这之间做出权衡,出让一些安全性来满足灵活性;

出让的安全性

  • 页面中可以嵌入第三方资源

页面中可以引用第三方资源,不过这也暴露了很多诸如 XSS 的安全问题,因此又在这种开放的基础之上引入了 CSP (内容安全策略)来限制其自由程度。CSP 的核心思想是让服务器决定浏览器能够加载哪些资源,让服务器决定浏览器是否能够执行内联 JavaScript 代码

  • 跨文档消息机制

两个不同源的 DOM 是不能相互操纵的,浏览器中又引入了跨文档消息机制,可以通过 window.postMessage 的 JavaScript 接口来和不同源的 DOM 进行通信。

  • 跨域资源共享

不同域之间使用 XMLHttpRequest 和 Fetch 都是无法直接进行跨域请求的,浏览器又在这种严格策略的基础之上引入了跨域资源共享策略(CORS),使用该机制可以进行跨域访问控制,从而使跨域数据传输得以安全进行。

Web网络安全

我们使用 HTTP 传输的内容很容易被中间人窃取、伪造和篡改,通常我们把这种攻击方式称为中间人攻击。具体来讲,在将 HTTP 数据提交给 TCP 层之后,数据会经过用户电脑、WiFi 路由器、运营商和目标服务器,在这中间的每个环节中,数据都有可能被窃取或篡改。比如用户电脑被黑客安装了恶意软件,那么恶意软件就能抓取和篡改所发出的 HTTP 请求的内容。或者用户一不小心连接上了 WiFi 钓鱼路由器,那么数据也都能被黑客抓取或篡改。

在 HTTP 协议栈中引入安全层

鉴于 HTTP 的明文传输使得传输过程毫无安全性可言,且制约了网上购物、在线转账等一系列场景应用,于是倒逼着我们要引入加密方案。从 HTTP 协议栈层面来看,我们可以在 TCP 和 HTTP 之间插入一个安全层,所有经过安全层的数据都会被加密或者解密。安全层有两个主要的职责:对发起 HTTP 请求的数据进行加密操作和对接收到 HTTP 的内容进行解密操作。

HTTPS传输数据

在传输数据阶段依然使用对称加密,但是对称加密的密钥我们采用非对称加密来传输

  • 首先浏览器向服务器发送对称加密套件列表、非对称加密套件列表和随机数 client-random;
  • 服务器保存随机数 client-random,选择对称加密和非对称加密的套件,然后生成随机数 service-random,向浏览器发送选择的加密套件、service-random 和公钥;
  • 浏览器保存公钥,并生成随机数 pre-master,然后利用公钥对 pre-master 加密,并向服务器发送加密后的数据;
  • 最后服务器拿出自己的私钥,解密出 pre-master 数据,并返回确认消息。

数字证书

通过上面的方式我们实现了数据的加密传输,不过这种方式依然存在着问题,黑客通过 DNS 劫持将网址的 IP 地址替换成了黑客的 IP 地址,这样访问的其实是黑客的服务器了,黑客就可以在自己的服务器上实现公钥和私钥,而对浏览器来说,它完全不知道现在访问的是个黑客的站点。所以我们还需要服务器向浏览器提供证明“我就是我”。证明我就是我需要使用权威机构颁发的证书,这个权威机构称为 CA(Certificate Authority),颁发的证书就称为数字证书(Digital Certificate)。

数字证书有两个作用:一个是通过数字证书向浏览器证明服务器的身份,另一个是数字证书里面包含了服务器公钥。

完整的HTTPS请求流程

通过引入数字证书,我们就实现了服务器的身份认证功能,这样即便黑客伪造了服务器,但是由于证书是没有办法伪造的,所以依然无法欺骗用户。

总结

我们使用对称加密实现了安全层,但是由于对称加密的密钥需要明文传输,所以我们又将对称加密改造成了非对称加密。但是非对称加密效率低且不能加密服务器到浏览器端的数据,于是我们又继续改在安全层,采用对称加密的方式加密传输数据和非对称加密的方式来传输密钥,这样我们就解决传输效率和两端数据安全传输的问题。采用这种方式虽然能保证数据的安全传输,但是依然没办法证明服务器是可靠的,于是又引入了数字证书,数字证书是由 CA 签名过的,所以浏览器能够验证该证书的可靠性

浏览器系统安全

浏览器安全架构

如果浏览器被曝出存在漏洞,那么在这些漏洞没有被及时修复的情况下,黑客就有可能通过恶意的页面向浏览器中注入恶意程序,其中最常见的攻击方式是利用缓冲区溢出。和 XSS 攻击页面相比,这类攻击无疑是枚“核弹”,它会将整个操作系统的内容都暴露给黑客,这样我们操作系统上所有的资料都是不安全的了。为了提高安全性,浏览器的采用了如下的多进程架构。并且提供了安全沙箱和站点隔离来进一步加强安全

安全沙箱

由于渲染进程需要执行 DOM 解析、CSS 解析、网络图片解码等操作,如果渲染进程中存在系统级别的漏洞,那么以上操作就有可能让恶意的站点获取到渲染进程的控制权限,进而又获取操作系统的控制权限,这对于用户来说是非常危险的。基于以上原因,我们需要在渲染进程和操作系统之间建一道墙,即便渲染进程由于存在漏洞被黑客攻击,但由于这道墙,黑客就获取不到渲染进程之外的任何操作权限。将渲染进程和操作系统隔离的这道墙就是我们要聊的安全沙箱。

浏览器中的安全沙箱是利用操作系统提供的安全技术,让渲染进程在执行过程中无法访问或者修改操作系统中的数据,在渲染进程需要访问系统资源的时候,需要通过浏览器内核来实现,然后将访问的结果通过 IPC 转发给渲染进程。安全沙箱最小的保护单位是进程。因为单进程浏览器需要频繁访问或者修改操作系统的数据,所以单进程浏览器是无法被安全沙箱保护的,而现代浏览器采用的多进程架构使得安全沙箱可以发挥作用。

安全沙箱影响的模块功能

  • 持久存储

存储 Cookie 数据的读写。通常浏览器内核会维护一个存放所有 Cookie 的 Cookie 数据库,然后当渲染进程通过 JavaScript 来读取 Cookie 时,渲染进程会通过 IPC 将读取 Cookie 的信息发送给浏览器内核,浏览器内核读取 Cookie 之后再将内容返回给渲染进程。一些缓存文件的读写也是由浏览器内核实现的,比如网络文件缓存的读取。

  • 网络访问

同样有了安全沙箱的保护,在渲染进程内部也是不能直接访问网络的,如果要访问网络,则需要通过浏览器内核。不过浏览器内核在处理 URL 请求之前,会检查渲染进程是否有权限请求该 URL,比如检查 XMLHttpRequest 或者 Fetch 是否是跨站点请求,或者检测 HTTPS 的站点中是否包含了 HTTP 的请求。

  • 用户交互

为了限制渲染进程有监控到用户输入事件的能力,所以所有的键盘鼠标事件都是由浏览器内核来接收的,然后浏览器内核再通过 IPC 将这些事件发送给渲染进程。

渲染进程需要渲染出位图。为了向用户显示渲染进程渲染出来的位图,渲染进程需要将生成好的位图发送到浏览器内核,然后浏览器内核将位图复制到屏幕上。

操作系统没有将用户输入事件直接传递给渲染进程,而是将这些事件传递给浏览器内核。然后浏览器内核再根据当前浏览器界面的状态来判断如何调度这些事件,如果当前焦点位于浏览器地址栏中,则输入事件会在浏览器内核内部处理;如果当前焦点在页面的区域内,则浏览器内核会将输入事件转发给渲染进程。

站点隔离

所谓站点隔离是指 Chrome 将同一站点(包含了相同根域名和相同协议的地址)中相互关联的页面放到同一个渲染进程中执行。由于最初都是按照标签页来划分渲染进程的,所以如果一个标签页里面有多个不同源的 iframe,那么这些 iframe 也会被分配到同一个渲染进程中,这样就很容易让黑客通过 iframe 来攻击当前渲染进程。而站点隔离会将不同源的 iframe 分配到不同的渲染进程中,这样即使黑客攻击恶意 iframe 的渲染进程,也不会影响到其他渲染进程的。

作者:一只菜鸟攻城狮啊

链接:https://www.cnblogs.com/suihang/p/13271872.html

跨浏览器共享数据_不懂浏览器安全,被老板邀请爬山?相关推荐

  1. 跨浏览器共享数据_可以让跨域要数据的模式:jsonp

    来源 JSONP(JSON with Padding)是数据格式JSON的一种"使用模式",可以让网页从别的网域要数据.另一个解决这个问题的新方法是跨来源资源共享. 由于同源策略, ...

  2. 第七章:跨程序共享数据-探究内容提供器

    运行时权限 Android 6.0 之后的系统提供了两种权限: 普通权限.例如:访问网络状态.监控开机是否完成等.这种权限会在安装 APP 时询问用户是否同意. 危险权限,也就是说运行时权限,需要在程 ...

  3. 用FileMapping跨进程共享数据

    FileMapping貌似是Windows唯一提供的跨进程共享数据的方法.如果将客户端的资源文件单独创建一个资源进程,则本机开启的多个客户端都可以使用该资源进程获取资源,这样,很容易使大型3D游戏支持 ...

  4. 第7章 跨程序共享数据,探究

    第7章 跨程序共享数据,探究 内容提供器 在上一章中我们学了Android数据持久化的技术,包括文件存储.SharedPreferences存 储.以及数据库存储.不知道你有没有发现,使用这些持久化技 ...

  5. 获取浏览器唯一标识_探讨浏览器指纹

    一.什么是浏览器指纹? 我们常说的指纹,都是指人们手指上的指纹,因具有唯一性,所以可以被用来标识一个人的唯一身份.而浏览器指纹是指仅通过浏览器的各种信息,如CPU核心数.显卡信息.系统字体.屏幕分辨率 ...

  6. ie浏览器在线使用_全球浏览器5月份市场份额公布!Chrome和Edge浏览器迎来新一轮“撕X”大战...

    2009-2020年,十余年沧海桑田,全球浏览器市场竞争格局出现了极大的改变.IE浏览器从全球近三分之二的市场占有率,跌至现今的1.41%,若不是某些机构的死守,这个数字可能早就无限趋近于0.随后,I ...

  7. tplink 跨路由器 共享打印机_焦作联通案例分享:跨网段通过防火墙共享打印机设置...

    跨网段通过防火墙共享打印机设置 焦作联通网络部:薛培延 两个不同的局域网间如何实现打印机共享操作呢?以下将与大家分享一下处于同一个路由器连接下(即处于同一个域中的计算机之间)不同局域网段之间打印机共享 ...

  8. 什么浏览器好用_手机浏览器不只UC,好用的浏览器还有这些

    在手机上,很多人都用UC,当然也有不少人使用的是系统预装的浏览器,其实除了这两种之外,还有很多良心浏览器你没见过,今天就给大家介绍下五款安卓平台上那些比较良心而且相对好用的浏览器. 一.X浏览器 这个 ...

  9. docker 容器共享数据_如何在Docker容器之间共享数据

    docker 容器共享数据 介绍 (Introduction) Docker is a popular containerization tool used to provide software a ...

  10. 欧朋浏览器java下载_欧朋浏览器java手机版

    欧朋浏览器java手机版介绍 欧朋浏览器java手机版涵盖海量新闻资讯,实时更新,根据欧朋独有云端数据处理技术,你看到的,就是不一样!热点,资讯,深度,娱乐,一个就够. 经常使用欧朋浏览器,会习惯打开 ...

最新文章

  1. gulp 配置自动化前端开发
  2. Java Web中的jsp技术
  3. iOS之富文本(二)
  4. 08 ORA系列:ORA-01861 文字与格式字符串不匹配
  5. c#读蓝牙数据_客户端实现蓝牙接收(C#)知识总结
  6. 怎么在终端启用python_在终端启动Python时报错的解决方案
  7. 二维动画作品_「咻动画」二维动画制作中角色造型的设计要点
  8. gcc对C语言的扩展:语句内嵌表达式(statement-embedded expression)
  9. 设计模式 - 单例模式(Singleton Pattern)
  10. web开发中的跨域问题
  11. SQL语句和EF Group by 用法
  12. 证书 vivo_vivo秦飞:真假5G不存在 NSA模式手机未来仍可用
  13. multisim仿真D触发器设计的模六计数器并在数码管显示0-5
  14. POJ-2262 Goldbach's Conjecture
  15. Shiro框架基本知识及应用
  16. SpringBoot整合Redis(十九)
  17. python 如何调试uc浏览器_UC浏览器开发者工具
  18. 计算机电子表格计算怎么做,excel表格如何做总计|excel表格总计教程
  19. 【历史上的今天】1 月 25 日:电子游戏起源;《吃豆人》作者出生;“蠕虫王”问世
  20. 微信开发 - 获取用户地理位置定位

热门文章

  1. 计算空间中点到直线的距离
  2. word中插入代码段
  3. ThinkPHP自定义错误页面
  4. 【有奖投票】程序员IT好书评选
  5. 二阶系统阶跃响应实验_二阶系统阶跃响应实验心得体会
  6. 昆仑通态屏幕制作(连载1)---接触篇
  7. 中国塔吊行业投资规划分析及前景预测报告2022-2028年版
  8. 仿映客、花椒手机移动视频直播系统源码
  9. 关于亿图图示缩放锁定1%的问题
  10. plsql 通过 excel 创建表