博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 学习十四 探索安全性和权限
阅读量:5094 次
发布时间:2019-06-13

本文共 2032 字,大约阅读时间需要 6 分钟。

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);
 
 
 
 
 
 
 
 
 
 
 
 
 

转载于:https://www.cnblogs.com/manziluo/p/5800417.html

你可能感兴趣的文章
Nginx的虚拟主机配置
查看>>
overflow 属性
查看>>
Java中多态的一些简单理解
查看>>
洛谷 1449——后缀表达式(线性数据结构)
查看>>
JZOJ 3.10 1539——三条直线
查看>>
[最小割][Kruskal] Luogu P5039 最小生成树
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
Javascript的调试利器:Firebug使用详解
查看>>
(转)Android之发送短信的两种方式
查看>>
使用vue脚手架搭建项目
查看>>
Java基础之ArrayList与LinkedList、Vector,以及HashMap与HashTable的区别
查看>>
网络爬虫初步:从一个入口链接开始不断抓取页面中的网址并入库
查看>>
iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
查看>>
python第九天课程:遇到了金角大王
查看>>
字符串处理
查看>>
ECharts(Enterprise Charts 商业产品图表库)初识
查看>>
LeetCode Factorial Trailing Zeroes (阶乘后缀零)
查看>>
hdu 5402 Travelling Salesman Problem (技巧,未写完)
查看>>
[AIR] 获取U盘,打开U盘
查看>>