android 学习十四 探索安全性和权限

1.部署安全性:应用程序必须使用数字证书才能安装到设备上。

2.执行期间的安全性:

2.1 使用独立进程

2.2 使用固定唯一用户ID

2.3  申明性权限模型

3数字证书

3.1.数字证书的用处:使用数字证书对应用进行签名后,防止应用程序被非法更新(只有相同的数字证书才能更新应用)

3.2.数字证书:包含相关信息(如:公司名称和地址等)的工件。 重要特性包括(签名和公/私钥)。

3.3.数字证书的获取:a.从证书授权机构购买 b.使用keytool等工具生成。

3.4数字证书的存储:存储在密钥库中,有别名,在密钥库中用别名表示。

3.5证书生成命令

keytool -genkey -v -keystore "c:\android\release\release.keystore"

-alias androidbook -storepass paxxword -keypass paxxword -keyalg RSA
                  -validity 14000

有效期google要求大于14000天,如果失效,应用可以继续用,但是要进行更新等构建活动就会报错。

3.6证书更新必须和之前的证书匹配。

4.对应用程序进行签名:

4.1三要素:数字证书,apk,将数字证书应用到apk文件的使用程序(可以使用jdk中的jarsigner)

4.2

5.调试用的默认签名证书不能用于生产部署,因为有效期只有365天。

6.android要求用原始的签名对应用和程序的更新进行签名。

7.为了提高运行效率,android会视图将应用中未压缩的数据进行mmap()映射到内存,但是这个操作的前提是应用中的数据是字节对齐的,所以将应用发布到设备前,最好字节对齐。sdk提供了工具,可以在命令行执行:

>zipalign -v  4 old.apk new.apk

检查是否对账

>zipalign -c -v 4 AfinalTest_align.apk

8.边界安全性:独立的用户ID和独立的进程,保证了边界。应用直接的资源共享,必须显示进行。

9.在描述文件中必须声明需要的权限,在应用安装时,用户可以决定是否允许这些权限,如果 没有被允许,任何非授权操作都将失败。

10.常用权限

11.添加权限请求的方法

<manifest … >

<application>

</application>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_CALENDAR" />
</manifest>

12.自定义权限

<permission

android:protectionLevel ="normal"

android:label="Start My Activity"

android:description="@string/startMyActivityDesc"

android:name="dcm.permission.STARTMYACTIVITY" ></permission>

使用自定义授权来控制活动的调用权限

<activity android:name= "PrivActivity" android:permission ="dcm.permission.STARTMYACTIVITY">

<intent-filter >

<action android:name="android.intent.action.MAIN" />

</intent-filter>

</activity >

 请求自定义权限

< uses-permission android:name ="dcm.permission.STARTMYACTIVITY" />

12.URI权限传递

应用可以将ContentProvider的权限进行传递,而ContentProvider的权限是通过URI展现的。如果一个应用希望把权限传递给另一个应用可以如下操作,但前提是有传递权限所需要的适当权限。

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(contentUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivity(intent);

时间: 2024-10-17 15:28:58

android 学习十四 探索安全性和权限的相关文章

android学习十四(android的接收短信)

收发短信是每个手机基本的操作,android手机当然也可以接收短信了.android系统提供了一系列的API,使得我们可以在自己的应用程序里接收和发送短信. 其实接收短信主要是利用我们前面学过的广播机制.当手机接收到一条短信的时候,系统会发出一条值为andorid.provider.Telephony.SMS_RECEIVED的广播,这条广播里携带着与短信相关的所有数据.每个应用程序都可以在广播接收器里对它进行监听,收到广播时在从中解析出短信的内容即可. 下面我们来个具体的例子实践下吧,新建一个

Oracle学习(十四):管理用户安全

--用户(user) SQL> --创建名叫 grace 密码是password 的用户,新用户没有任何权限 SQL> create user grace identified by password; 验证用户: 密码验证方式(用户名/密码) 外部验证方式(主机认证,即通过登陆的用户名) 全局验证方式(其他方式:生物认证方式.token方式) 优先级顺序:外部验证>密码验证 --权限(privilege) 用户权限有两种: System:允许用户执行对于数据库的特定行为,例如:创建表.

Android学习Scroller(四)——实现拉动后回弹的布局

MainActivity如下: package cc.testscroller2; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 实现可以拉动后回弹的布局. * 类似于下拉刷新的. * * 参考资料: * 1 http://gundumw100.iteye.com/blog/1884373 * 2 http://blog.csdn.net/gemmem/article/details/7321910

Android学习笔记四:添加Source

问题描述 Source not foundThe JAR file D:\.....\sdk\platforms\android-20\android.jar has no source attachment. 问题原因及解决办法 1. 使用SDK Manager下载最新版本的Sources for Android SDK 一般文件下载目录默认在SDK下的sources文件中即 \adt-bundle-windows-x86_64-20130522\sdk\sources\android-20

五、Android学习第四天补充——Android的常用控件(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 五.Android学习第四天补充——Android的常用控件 熟悉常用的Android的几个常用控件的使用方法: 一.RadioGroup和RadioButton——单选按钮 二.Checkbox——复选框 三.Toast——提示框,会自动消失 四.ProgressBar——进度条工具 五.ListView——以列表形式将控件显示出来 下面就对这些内容做个详细的解释: 首

四、Android学习第四天——JAVA基础回顾(转)

(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的第四天,在程序中已经遇到了JAVA中以前不常用的一些知识点,赶紧回顾复习一下,打下基础 这里就做个简单的小结: 一.匿名内部类 匿名内部类说白了就是个没有被命名的JAVA类 在以下条件下使用匿名内部类比较适合: ①只用到该类的一个实例时 ②类在定义后被马上用到 ③类非常小(SUN推荐是在4行代码以下

处女男学Android(十四)---Android 重量级数据存储之SQLite

前言 不知不觉的Android基础系列已经写了十三篇了,这是第十四篇~上一篇blog记录了Android中的一种数据存储方案,即共享参数(Sharedpreferences)的使用(处女男学Android(十三)---Android 轻量级数据存储之SharedPreferences).最近初学如何在Android中应用SQLite,写了一个基于ListView的增删查的小例子,本篇blog就记录一下我学习到的如何在Android中操作SQLite持久化客户端数据. 初始化SQLite 关于SQ

Android学习十---Android Camera

Android camera用来拍照和拍摄视频的先看一下最后实现的效果图             最后的效果图 一.准备 在你的应用程序上使用android拍照设备,需要考虑以下几个方面 1. 是否是一定需要camera 如果需要,那么就无法安装在没有摄像头的设备. 需要在mainfest 中声明 <uses-permission android:name="android.permission.CAMERA" /> <uses-feature android:nam

Oracle学习(十四):管理用户安全性

--用户(user) SQL> --创建一个名为 grace password是password 的用户,新用户没有不论什么权限 SQL> create user grace identified by password; 验证用户: password验证方式(username/password) 外部验证方式(主机认证,即通过登陆的username) 全局验证方式(其它方式:生物认证方式.token方式) 优先级顺序:外部验证>password验证 --权限(privilege) 用户