Android的安全问题

来源:互联网 发布:列式数据库 olap 编辑:程序博客网 时间:2024/06/03 22:59
Android的安全问题

安全问题在哪个平台,都是很重要的一方面。安卓开发中个人总结有以下几个方面来保护Android系统的安全。

1.1 代码安全-代码混淆(proguard)

由于java语言本身的特性,就算编译好APK的应用程序也会存在可能被反编译的危险。Proguard在代码层面对应用程序APP的保护,因为它混淆了关键代码,替换命名让想窃取代码的阅读困难,本身还可以压缩代码,优化编译过的Java字节码。

1.2 应用签名-数字证书

Android中的APP都有数字证书(App的数字签名),数字证书用于保护APP的开发者与其APP的识别关系,拥有相同数字签名的APP,在升级更新中才会确认相同APP。因为Android系统不会安装没有签名的APP。

1.3 应用接入权限控制-AndroidMainifest文件权限声明和权限检查机制

所有应用程序在使用Android受限资源的时候,都需要显示向系统声明所需要的权限,或应用APP具备相应的权限,在申请受限资源的时候,通过权限机制的检查使用系统的Binder对象完成对系统服务的调用。它也有不足之处:如果授予权限将不会停止、当应用声明APP使用权限后,用户无法对部分权限进行控制、权限的声明机制和用户的安全想法相关联。


Android系统如何检查使用者的权限
先判断permission名称,如果为空直接返回PERMISSION_DENIED;
判断Uid,如果为0就是Root权限,不做权限控制;是System Server的Uid就是系统权限,
也不做权限控制;如果Uid与参数中的请求Uid不相同,将返回PERMISSION_DENIED;
通过调用PackageManagerService.checkUidPermission()方法判断Uid是否具有相应的权限;
此方法会去XML的权限列表与platform.xml中查找;


1.4 Linux内核层安全机制-Uid与访问权限控制

Android本身是基于Linux内核开发的,所有Android都继承了Linux的安全特性,比如文件访问操作,Linux文件系统的权限控制是由user、group、other与r/w/x的不同组合来实现,同样的,Android也实现了这些操作,通常情况下,只有System、Root用户才会有权限访问到系统文件,一般用户不能访问。

1.5 Android虚拟机沙箱隔离操作


因为Android的APP运行在虚拟机中,所以才会有沙箱隔离操作,用来让应用之间相互隔离,一般情况下,在不同的应用之间不能相互访问,APP都有对应的Uid,所有APP也运行在单独的虚拟机下,与其他应用完全隔离开来,这样一来即实现了安全保护,也让应用之间互不影响,就算其中一个APP出现崩溃,也不会使其他APP受到影响;
0 0
原创粉丝点击