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

目录
相关文章
|
8月前
|
Java Android开发 数据安全/隐私保护
Cordova 打包APP安装失败
Cordova 打包APP安装失败
77 0
|
8月前
|
JavaScript Android开发
Cordova 后台运行 Android APP
Cordova 后台运行 Android APP
122 0
|
iOS开发
Xcode给应用开启沙箱sandbox
Xcode给应用开启沙箱sandbox
232 0
Xcode给应用开启沙箱sandbox
|
iOS开发
iOS开发 - 通过代码获取沙盒启动图片
iOS开发 - 通过代码获取沙盒启动图片
175 0
|
iOS开发 MacOS
XCode应该是从11.4开始支持Sandbox
XCode应该是从11.4开始支持Sandbox
148 0
|
Android开发 iOS开发 Windows
将您的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 为要定位的每个平台创建一个包。
2116 0
|
Web App开发 Java 开发工具
ionic和cordova初探--从安装到运行首个app
好多人说ionic好用,一直要推荐我用,我就不信了,来安装玩一下试试效果。实践出真知!安装过程各种坑,工具太多了,太麻烦了,差点放弃(还好坚持下来呢)。 1.安装node 许多前端工具的安装都依赖于node的包管理器npm,Node官网: https://nodejs.org/ 安装完成后在cmd中输入 npm -v 回车。
2430 0
|
Android开发
安卓APP的运行方式
有时候只想用真机测试,或者用虚拟机都可以设定。
1166 0
|
存储 大数据 iOS开发