当前位置:文档之家› GoogleChrome浏览器架构解析

GoogleChrome浏览器架构解析


Sandbox技术
主要目标: 保护用户的系统不被网页上的恶意软件侵入 保护用户系统的输入事件(键盘/鼠标)不被监视 保护用户系统中的文件不被偷取
Sandbox不保护 Cookies Passwords HTML5 数据库, local/session storage 跨站攻击 (XSS, 用户数据存贮在网络上)
Sandbox技术
设计思想
尽可能的利用操作系统提供的安全性能 提供尽可能少的权限 (sandbox & sandboxed) 假定受到sandbox管理的代码是恶意代码 模拟虚拟机器环境并不安全
Browser tasks
Rendering Engine Browser Kernel Rendering Engine CSS Image decoding JavaScript interpreter Regular expressions Layout Document Object Model Rendering SVG XML parsing XSLT Both URL Parsing Unicode parsing Cookie database History database Password database Window management Location bar Safe Browsing blacklist Network stack SSL/TLS Disk cache Download manager Clipboard
Sandbox on Windows
目标程序将受到限制: 控制其对文件系统和网络的访问 限制其对窗口系统的访问 限制其对输入设备的访问 使用方法: 基于user token产生的受限token 基于受限job对象的进程 将目标程序运行在一个虚拟桌面内
Safe Browsing
Safe Browsing Service
Google Chrome 浏览器
架构解析及相关特性分析 --丁建宁Google软件工程师
设计目标
稳定 (Stability) 安全 (Safe) 高效 (Speed)
核心思想-多进程架构
不同的网络应用分别运行在各自独立的地址空 间 不同的网络应用分别运行在权限不同的隔离运 行环境 充分利用现代多核处理器的优势
浏览器进程
渲染进程
渲染进程
Renderer, Worker进程
嵌入WebKit来解析, 渲染和处理网 页及网络应用 Untrusted
NPAPI插件 扩展组件
扩展组件进程:
各种第三方开发的功能扩展 (Autopage, Download helper) Untrusted
NPAPI插件
插件进程:
嵌入NPAPI插件 (Flash, Java, Silverlight, etc.) Untrusted & trusted
多进程架构示意
多进程架构 一切为了稳定
进程类型
浏览器进程 主控和协调各功能模块和 相关进程 IO 处理和转发 Renderer, Worker进程 嵌入WebKit来解析, 渲染和 处理网页及网络应用 扩展组件进程: 各种第三方开发的功能扩 展(Autopage, Download helper) 插件进程: 嵌入NPAPI插件 (Flash, Java, Silverlight, etc.)
新的技术
SPDY (应用层协议)
请求复用 请求优先级(Qos) 压缩头部 ebSocket (双向通信) WebWorker (多执行流)
Q&A
网站自我检测
/safebrowsing/diagnostic?site=http://your-site
高效 速度是王道
高效实现
锁无关的页面更新:
浏览器进程为页面维护一个渲染位图的后备存储 渲染进程通过Shared Memory(共享内存)发送页面渲染的更新 位图到后备存储 浏览器进程从后备存储读取页面位图并画在屏幕上 浏览器进程返回ACK响应到渲染进程,通知渲染进程可以发送 新的渲染信息更新
提供关于有关钓鱼和含有恶意代码网站的黑 名单 长期保持更新 提供Safe Browsing API
下载并检测要访问的网站是否存在风险 提示用户
Safe Browsing资源
API指南
/intl/zh-CN/apis/safebrowsing/developers_guide_v2. html
进程模型1 - process-per-site-instance
Site -> 相同域名(包含子域名),访问模式和端口 SiteInstance -> 一组来自相同site,相互有联系的页面 联系->通过脚本或导航产生的不同页面 优点 隔离来自于不同site的页面 隔离相同site的不同应用 缺点 更多内存 需要跨进程的proxy来实现跨域页面间脚本访问
进程模型4 -
single process
所有功能在同一进程 同旧式浏览器设计 不安全 不稳定
插件和扩展的进程模型
分别运行在独立的进程 同一个插件/扩展在运行时只有一个进程存在
沙箱和安全浏览服务 行走江湖,安全第一
沙箱在不同进程上的应用
浏览器进程
主控和协调各功能模块和相关进 程 IO 处理和转发 Trusted
进程模型2 -
process-per-site
所用来自于相同site的页面在一个进程 优点 隔离来自于不同site的页面 更少的内存使用 缺点 如果一个site有很多应用,相关的渲染进程会占 用很多内存 需要跨进程的proxy来实现跨站脚本访问
进程模型3 - process-per-tab
Browser instance: 一组有脚本关联的页面 页面(tab)不会切换自己的进程 优点 有脚本关联的页面可以相互通信 缺点 导致不期待的信息共享
浏览器进程
渲染进程
渲染进程
NPAPI插件
扩展组件
NPAPI插件
进程间通信
通信方式 使用 named pipes/socketpair来作为IPC通信通道 以异步通信方式为主。 少量的IPC通信使用同步方式。 一些数据使用Shared Memory(共享内存)来相互交换 消息类型 route control 每个进程有一个专门的线程来处理IPC通信
滚动页面显示使用类似方法(传送滚动区域的位图)
高效组件
WebKit 超快,开源的布局引擎 (Rendering Engine) 较小的资源占用 (在嵌入式浏览器上的广泛使用) V8 超快优化的V8 JavaScript 引擎 网络应用可以以更快的速度运行复杂的逻辑 Skia 全面支持SVG, Canvas的需求 较小的资源占用 跨平台
相关主题