Android的SandBox(沙箱)



在研究Android系统时,有时会遇到Sandbox(沙箱)这个概念。沙箱概念本身并不是太新奇,但是一直不是很清楚Android是如何实现它所称的“沙箱”的。网上不少人声称应用使用了虚拟机就是应用了沙箱,一直对这种说法表示怀疑。

最近发现Android的网站上更新了一些文档,其中包括对Sandbox的解释,这才明白Android中Sandbox的含义。

Android的”沙箱“就是在Linux的进程管理基础上对UID的使用做了改进。普通的Linux中启动的应用通常和登陆用户相关联,同一用户的UID相同。但是Android中给不同的应用都赋予了不同的UID,这样不同的应用将不能相互访问资源。对应用而言,这样会更加封闭,安全。虽然这个现象早已了解,但是一直不知道这就是Android所谓的”sandbox“。

有关英文解释见下面:

The Application Sandbox

The Android platform takes advantage of the Linux user-based protection as a means of identifying and isolating application resources. The Android system assigns a unique user ID (UID) to each Android application and runs it as that user in a separate process.
This approach is different from other operating systems (including the traditional Linux configuration), where multiple applications run with the same user permissions.

This sets up a kernel-level Application Sandbox. The kernel enforces security between applications and the system at the process level through standard Linux facilities, such as user and group IDs that are assigned to applications. By default, applications
cannot interact with each other and applications have limited access to the operating system. If application A tries to do something malicious like read application B‘s data or dial the phone without permission (which is a separate application), then the operating
system protects against this because application A does not have the appropriate user privileges. The sandbox is simple, auditable, and based on decades-old UNIX-style user separation of processes and file permissions.

Since the Application Sandbox is in the kernel, this security model extends to native code and to operating system applications. All of the software above the kernel in Figure 1, including operating system libraries, application framework, application runtime,
and all applications run within the Application Sandbox. On some platforms, developers are constrained to a specific development framework, set of APIs, or language in order to enforce security. On Android, there are no restrictions on how an application can
be written that are required to enforce security; in this respect, native code is just as secure as interpreted code.

In some operating systems, memory corruption errors generally lead to completely compromising the security of the device. This is not the case in Android due to all applications and their resources being sandboxed at the OS level. A memory corruption error
will only allow arbitrary code execution in the context of that particular application, with the permissions established by the operating system.

Like all security features, the Application Sandbox is not unbreakable. However, to break out of

时间: 2024-10-10 07:36:17

Android的SandBox(沙箱)的相关文章

JavaScript SandBox沙箱设计模式

沙箱模式常见于YUI3 core,它是一种采用同一构造器(Constructor)生成彼此独立且互不干扰(self-contained)的实例对象,而从避免污染全局对象的方法. 命名空间 JavaScript本身中没有提供命名空间机制,所以为了避免不同函数.对象以及变量名对全局空间的污染,通常的做法是为你的应用程序或者库创建一个唯一的全局对象,然后将所有方法与属性添加到这个对象上.缙云县外国专家局 代码清单1 : 传统命名空间模式 01 /* BEFORE: 5 globals */ 02 //

Android 沙箱

Android的权限机制之—— “沙箱”机制sharedUserId和签名 李洋专栏:Android中的沙箱模型

Android API Guides---Host-based Card Emulation

Host-based Card Emulation 许多提供NFC功能的Andr??oid手机已经支持NFC卡模拟.在大多数情况下,该卡是由在该装置的单独芯片仿真,称为安全元件.无线运营商提供了很多的SIM卡还包含一个安全元件. Android 4.4系统的介绍卡仿真的一个额外的方法,不涉及安全的元素,称为基于主机的卡仿真.这允许任何Android应用程序来模拟卡,并直接交谈的NFC读取器.本文介绍了基于主机的卡模拟(HCE)如何适用于Android以及如何开发模拟使用这种技术的NFC卡的应用程

Android weixin service

简介 想了很久,为什么Android 微信的服务杀不死?既没有给它权限.又没有手动启动它,为什么它会自动开启接受消息?奇怪了? 先不管它采用什么方法,看看它的源码,然后分析推出自己的结论. 代码分析 AndroidManifest.xml中的服务与广播 <!-- 通知广播接受 --> <receiver android:name="com.tencent.mm.booter.NotifyReceiver" android:exported="false&qu

Android官方文档之Introduction

写在前面的话:接触Android的时间也不短了,听了视频.看了书.敲了代码,写了博客,做了demo...但是想做出一款优秀的APP(哪怕是封装一个不错的功能)还有很长的路要走.于是前些日子我打算更加深入地往底层.往源代码方向研究Android--我就买了一本<Android群英传>拜读一下,在刚读到前言的时候,我发现作者推荐了阅读官方的Training和Guide,我才意识到,其实之前我接触到的各个渠道的Android知识,都是来自官方文档,与其更加深入地了解Android,不如把官方文档的内

Sandbox Design &amp;&amp; Implementation Principles

catalog 1. sandbox introduction 2. Sandboxie 3. seccomp(short for secure computing mode): API级沙箱 4. 利用do_syscall_trace一次性对所有系统调用进行Hook监控 1. sandbox introduction 在计算机安全领域,沙盒(sandbox 沙箱)是一种安全机制,为运行中的程序提供的隔离环境.通常是作为一些来源不可信.具破坏力或无法判定程序意图的程序提供实验之用 沙盒通常严格控

Android开源项目收集

软件名:gaeproxy软件作用:Android手机配置GoAgentFQ.项目地址:https://github.com/madeye/gaeproxy.git 软件名:ProxyDroid软件作用:Global Proxy App for Android System项目地址:https://github.com/madeye/proxydroid.git 软件名:dbartists软件作用:Douban Artists Third-party Android Client项目地址:http

Android平台上优秀的开源项目

软件名:gaeproxy 软件作用:Android手机配置GoAgent. 项目地址:https://github.com/madeye/gaeproxy.git 软件名:ProxyDroid 软件作用:Global Proxy App for Android System 项目地址:https://github.com/madeye/proxydroid.git 软件名:dbartists 软件作用:Douban Artists Third-party Android Client 项目地址:

Android APP性能优化(最新总结)

导语 安卓大军浩浩荡荡,发展已近十个年头,技术优化日异月新,如今Android 8.0 Oreo 都发布了,Android系统性能已经非常流畅了.但是,到了各大厂商手里,改源码自定系统,使得Android原生系统变得鱼龙混杂,然后到了不同层次的开发工程师手里,因为技术水平的参差不齐,即使很多手机在跑分软件性能非常高,打开应用依然存在卡顿现象.另外,随着产品内容迭代,功能越来越复杂,UI页面也越来越丰富,也成为流畅运行的一种阻碍.综上所述,对APP进行性能优化已成为开发者该有的一种综合素质,也是开