开发者社区> 刘恒兴> 正文

Chromium的沙盒Sandbox

简介: 代码位置: http://src.chromium.org/viewvc/chrome/trunk/src/sandbox/ Android使用和Linux一样的代码。
+关注继续查看

代码位置:

http://src.chromium.org/viewvc/chrome/trunk/src/sandbox/

Android使用和Linux一样的代码。http://src.chromium.org/viewvc/chrome/trunk/src/sandbox/linux/

1.设计目的/目标

纯粹地为了安全。

sandbox本身就意味着程序要使用多进程架构。做到安全的方法就是让可能不安全的代码在被剥夺了部分权限的sandboxed进程(非主进程)上跑,原则上在sandboxed进程中能利用的资源只有CPU和内存。

所以sandbox虽然和进程紧密相关,但sandbox的核心功能和大部分代码是关于降低权限,多进程只是其前提。sandbox和SandboxedProcess应该区分来理解。

2.特点

  1. Sandbox目录下的代码是独立的(依赖base目录少部分文件),可以供其它项目使用
  2. 利用操作系统提供的特性来控制进程的权限,如不允许读写文件系统(框架有提供API可以开放指定文件的读写权限)。Linux下有两个级别的sandbox,Setuid sandbox(限制大部分资源的访问权限)和Seccomp-BPF(限制影响到系统内核的资源访问)。
  3. sandbox进程可以通过IPC跟外部通信。
  4. Chromium中对Renderer进程进行sandbox,是期望对WebKit输入数据就得到输出渲染好的图,过程中的网络和文件读写操作通过IPC由Browser进程处理。部分插件也运行在独立的sandboxed进程,它崩溃掉并不影响浏览器进程,如Flash。

3.使用方法

参考 src/content/common/sandbox_linux/sandbox_init_linux.cc:

bool InitializeSandbox(scoped_ptr<sandbox::SandboxBPFPolicy> policy) {
  return SandboxSeccompBPF::StartSandboxWithExternalPolicy(policy.Pass());
}

 

参考链接:

http://www.chromium.org/developers/design-documents/sandbox

http://www.chromium.org/developers/design-documents/sandbox/Sandbox-FAQ

https://code.google.com/p/chromium/wiki/LinuxSandboxing

http://dev.chromium.org/developers/design-documents/process-models#TOC-Sandboxes-and-plug-ins

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Xcode给应用开启沙箱sandbox
Xcode给应用开启沙箱sandbox
22 0
XCode应该是从11.4开始支持Sandbox
XCode应该是从11.4开始支持Sandbox
53 0
nodejs --inspect-brk结合Chrome开发者工具的调试
命令行 node --inspect-brk 启动nodejs应用:
41 0
Chromium Viz 浅析 - SkiaRenderer & SkiaOutputSurface
**关于 Viz 的系列文章** [Chromium Viz 浅析 - 介绍篇][1] [Chromium Viz 浅析 - 合成器架构篇][2] ---- Chromium 关于光栅化和合成的一些主要性能优化项目包括 OOPD (Out of Process Display Compositor,进程外 Display 合成器), OOPR (Out of Process R
1732 0
Chromium Viz 浅析 - 合成器架构篇
**关于 Viz 的系列文章** [Chromium Viz 浅析 - 介绍篇][1] ---- ## Mojo 快速入门 因为后面的内容需要读者对 Mojo 有一定了解,如果以前没接触过的话,这部分内容提供了一个快速的入门。 简单的说 Mojo 是一个 Client/Service 的通讯机制,支持跨进程。一个 Mojo 链接建立的过程一般如下: 1. Cli
2294 0
Chromium Viz 浅析 - 介绍篇
很遗憾 Chromium 的工程师没有写一篇 How Viz Works 的文章来详细解析 Viz 这个重要的模块,能找到的一些相关文档都比较零散,所以我打算自己来写,不过个人研究深度有限,无法包括所有的细节,还请读者见谅。 计划写两到三篇文章,第一篇文章对 Viz 做一个概要的介绍,和它在 Chromium 整个合成器架构里面的角色。因为 Viz 的代码变动很快,所以文章的内容只是针对当前
1430 0
将您的Cordova应用程序打包
参考  https://github.com/MicrosoftDocs/cordova-docs/blob/master/articles/tutorial-package-publish/tutorial-package-publish-readme.md  Package Your Cordova App for Publishing to an App Store 为要定位的每个平台创建一个包。
1993 0
+关注
刘恒兴
一个喜欢在各个技术领域到处浪的人
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载