档案

Archive for the ‘Browser’ Category

Chrome for Android的sandbox机制

11月 26, 2012 留下评论

与其他大部分浏览其不同的是,Chrome采用的是多进程框架(http://www.chromium.org/developers/design-documents/multi-process-architecture),多进程框架除了稳定、快速之外一个非常重要的特点是可以方便的提供Sandbox机制来隔离网页渲染以及不安全脚本,使得浏览器更加安全。关于Linux下面的Chrome的Sandbox机制前面的文章已经经过相应的分析,本篇主要分析Chrome for Android中的Sandbox机制的实现。
阅读更多…

分类:Browser

关于Chrome for Android

11月 25, 2012 留下评论

1, Chrome for Android与Chromium for Android

Chrome是google的一个商标, 所以我们谈及Chrome的时候特指由Google发布的Chrome浏览器,而Chromium则是Chrome浏览器的对应的开源项目(http://www.chromium.org/)。 简单的说Chrome即是在Chromium的源代码基础上做一些产品化的工作并由Google发布出来的浏览器。Chrome for Android亦是如此。

2, Chromium for Android的源代码

目前,Chromium for Android的源代码并没有完全开放出来。 开放出的元带埋在Chromium的源代码目录树中,只需要很少的配置即可变异出Android版本的Chromium所需要的核心模块。 在Chromium的源代码中, 主要的部分已经开源并可以工作(WebKit、多进程框架、页面渲染、基本的事件处理、单元测试模块以及一个用于测试的基本的浏览器Shell程序)。 可以采用Git来检出所有的源代码:
http://code.google.com/p/chromium/wiki/UsingNewGit

3, 编译Chromium for Android及测试运行Shell程序(Content Shell)

关于编译,具体可参照官方的链接:
http://code.google.com/p/chromium/wiki/AndroidBuildInstructions
有几点需要注意的是:
阅读更多…

分类:Browser

Chromium相关的零碎

2月 7, 2012 留下评论

GPU硬件加速相关

  1. 可以通过”chrome://gpu”查看硬件加速相关的信息
Canvas: Hardware accelerated
HTML Rendering: Hardware accelerated
3D CSS: Hardware accelerated
WebGL: Hardware accelerated
WebGL multisampling: Hardware accelerated
  1. 对于特定硬件平台, 可能现在在chromium的blacklist中,通过”–ignore-gpu-blacklist”参数强制打开硬件加速
  2. 对于2D HTML5 cavas,通过”–enable-accelerated-2d-canvas”选项启用硬件加速, 对于WebGL, 通过”–enable-webgl”启用。
  3. “chrome://flags”中包含了更细化的选项,跟GPU相关的包括:”GPU Accelerated Painting”, “GPU Accelerated SVG and CSS Filters”, “Compositing with GPU”等等

阅读更多…

分类:Browser

Chromium浏览器中的Sandbox机制与实现(3)Seccomp sandbox

12月 20, 2011 留下评论

安全计算模式Seccomp(Secure Computing Mode) 是自Linux 2.6.10之后引入到kernel的特性,在进程进入了seccomp之后,它只能调用exit(), sigreturn(), read()和write()这几个系统调用(对应的文件描述符是在进入seccomp之前打开),其他的任何的系统调用都会引起内核发送SIGKILL信号结束进程。进程通过下面的代码进入Secure Computing模式:

prctl(PR_SET_SECCOMP, 1, 0, 0, 0);
//after this point, any system call other than exit,signreturn, read, write shall cause SIGKILL

在Chromium中,Seccomp Sandbox是Linux平台sandbox的另外一个重要的机制,它独立于上一篇讲的SUID Sandbox。在Chromium中,可以通过”–disable-seccomp-sandbox”和”–enable-seccomp-sandbox”来关闭或者打开Seccomp Sandbox。Chromium 15以后的版本都是默认打开seccomp sandbox, 通过ps,可以看到在打开一个tab的情况下,有如下几个chrome进程。
阅读更多…

分类:Browser

Chromium浏览器中的Sandbox机制与实现(2) SUID sandbox

12月 18, 2011 Comments off

本篇主要探讨Chromium中的SUID sandbox的实现。

1. Chromium中的Zygote机制

首先介绍一下Chromium中的zygote机制, 我们知道Chromium是多进程架构的,主要由一个UI进程(Browser),和多个渲染进程(Renderer)组成。 在一个新Tab中打开URL,chromium会创建一个新的Renderer进程对应于这个tab, 同时在UI进程(Browser)中创建Render Host对象负责与该Renderer进程交互。在Linux中,创建新的Renderer进程是通过Zygote来完成的。
执行”ps ax |grep chrome”, 我们可以看到下面几个进程

21696 pts/0    Sl+    0:15 /chromium/src/out/Debug/chrome
21736 pts/0    Sl+    0:00 /chromium/src/out/Debug/chrome
21738 pts/0    S+     0:00 /chromium/src/out/Debug/chrome --type=zygote
21761 pts/0    Sl+    5:03 /chromium/src/out/Debug/chrome --type=renderer --lang=zh-CN

阅读更多…

分类:Browser

Chromium浏览器中的Sandbox机制与实现 (1) 概览

12月 17, 2011 留下评论

安全问题是浏览器所必须面对的,在Chromium中,通过Sandbox为浏览器提供了更好的安全性支持。本系列文章主要介绍Linux平台上的Chromium Sandbox的原理与实现

Chromium中,Sandbox设计的主要原则包括:

  • 不重新发明轮子: 只利用现有操作系统已经提供的安全机制
  • 最低权限原则:Sandbox中的进程只拥有最低权限
  • 假定Sandbox中的代码都是恶意代码
  • Sandbox的设计必须是灵巧的: 非恶意的代码不应该访问它没有权限访问的内容
  • 模拟环境是不安全的:模拟器和虚拟机环境并不能够提供自身的安全性

阅读更多…

分类:Browser