zoukankan      html  css  js  c++  java
  • 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 elease elease.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);
     
     
     
     
     
     
     
     
     
     
     
     
     
  • 相关阅读:
    通过this调用本类属性和本类方法
    使用构造方法接收引用数据类型
    JAVA回形数
    Bt(宝塔面板)忘记用户名密码的解决方案
    关于xshell远程连接密码呈现灰色无法填写的问题
    ubunt系统创建定时任务
    阿里云服务器如何初始化
    解决laravel 配置路由时除 “/”路由 以外 ,所有路由访问不到的情况
    laravel 5.2 使用 captcha 实现 验证码
    在laravel中如何使用事务
  • 原文地址:https://www.cnblogs.com/manziluo/p/5800417.html
Copyright © 2011-2022 走看看