`
xiduxiaoyu
  • 浏览: 159415 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

自定义Android应用的访问权限

阅读更多

由于Android部分设计原理较为开放,可能通过Intent或PackageManager就可以解析处理调用其他应用的子类,所以在部分应用中需要做更多的安全处理,保证应用内部的稳定性和安全性。Android123强烈大家仔细阅读本文,这将会对您在构架Android应用时减少一些隐患的发生。

  稳定性: 部分类可能没有数值的传入将会导致可能初始化失败,造成Force Close等问题。

  安全性: 其他应用调用本程序的SQL数据库等问题,可能会造成一些无法预料到的损失。

  一、Android应用内部安全保护 

为了考虑内部部分敏感数据处理的安全性加入类ACL访问控制,当然使用了更加灵活的,比如UID、SID、PID等多种方式:今天Android开发网一起和大家谈论下开发过程中的处理细节。

  1. 部分私有的配置信息,或相对轻量级的内容,可以使用SharedPreferences接口提供的相关方法处理,并设置为安全标志位私有MODE_PRIVATE,不过需要注意的是该方方仅能但进程调用。

  2. SQLite的安全问题,对于Content Provider的处理权限,在Android中可以直接显示的声明,比如在androidmanifest.xml中声明读或写权限,在Provider节点中,声明android:writePermission或android:readPermission属性,当然其他程序声明了这些权限也可以访问,这时我们可以通过 android:authorities属性限制一个类的访问,比如android:authorities="cn.com.android123.cwj" 。最终类似

<provider
     android:name="cwjProvider"
     android:authorities="cn.com.android123.cwjProvider"
     android:writePermission="cn.com.android123.cwj.permission.WRITE_DATABASE"
     android:readPermission="cn.com.android123.cwj.permission.READ_DATABASE" />

      

  这里Android123提示大家,数据库本身的读写可以处理多线程问题,但是数据的先后可以考虑同步问题,设置android:multiprocess="true"属性来保证数据的正确性,相关问题不在本文讨论范围内,我们可能会在以后的内容中涉及这部分问题。

  3.  Activity、Service和Receiver的权限声明方式,可以直接使用android:permission属性,具体的和上面的SQLite安全一样的处理方式,演示代码如下

<activity 
      android:name=".cwj"
      android:authorities="cn.com.android123"
      android:permission="cn.com.android123.cwj.permission.ACCESS"/>

   

  二、Permission的声明

<permission
        android:name="cn.com.android123.cwj.permission.ACCESS"
        android:protectionLevel="normal" 
        android:label="@string/permission_aceess"
        android:description="@string/permission_aceess_detail" />

   

  当然还有可选的属性比如说android:protectionLevel="normal"设置保护权限,还有必须签名signature,当然这里对于权限分组我们可以通过类似permission的方法来声明permissionGroup,或直接使用系统的,比如android:permissionGroup="android.permission-group.SYSTEM_TOOLS"最终其他应用中调用,可以显示的在自己的manifest.xml中声明即可,类似 

<uses-permission android:name="cn.com.android123.cwj.permission.ACCESS" />

 

 

  三、账户安全声明

  直接在androidmanifest.xml中的Application中直接声明,比如标准用户权限类似

  android:sharedUserId="android.uid.shared"  ,当然处理一些RIL方面的可以声明类似 android.uid.phone 的权限,处理一些更敏感的数据。

  四、对于Service而言除了限制访问的package外,我们还可以通过直接绑定并参数判断的访问来处理尽量不使用android:exported="true"的导出方法,当然通过broadcast方式通讯可以通过intent的extra方式可以做一些简单的验证。

  五、PID的安全问题,通过限制processID的方式限制访问,仅允许在同一个进程空间访问。

分享到:
评论

相关推荐

    自定义统计SDKTcStatInterface.zip

     android:name="android.permission.ACCESS_FINE_LOCATION" /&gt;对应的5种权限,用途如下:网络访问权限,需要联网以便于向小米统计服务端上报统计数据。 查看网络状态,用于根据不同的网络环境,选择相应的上报策略...

    Android添加用户组及自定义App权限的方法

    Android:4.4.4 一、应用场景 在Android设备上,现在我们外接了一个USB转串口的设备,...但是这样,任何其他第三方应用都可以访问我们的设备,安全性一丝不剩。 另一个解决方案就是:改变/dev/ttyUSB0所属的用户组:

    新版Android开发教程.rar

    Android Android Android Android 应用现状 � 设备商: lenovo 、琦基、戴尔、三星、摩托罗拉、华为、英特尔、 Kogan 、索爱、华硕、多普达、爱可 视 、 Archos 等。 � 制造商: HTC 、 Telstra 等。 � 手机设计...

    疯狂Android讲义源码

     第1章 Android应用与开发环境 1  1.1 Android的发展和历史 2  1.1.1 Android的发展和简介 2  1.1.2 Android平台架构及特性 3  1.2 搭建Android开发环境 5  1.2.1 下载和安装Android SDK 5  1.2.2 安装...

    精通ANDROID 3(中文版)1/2

    2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 ...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色...

    android手机安全卫士

    1.整体项目采用MVC框架,是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和...

    ML_Manager_Pro_v3.5.2_build_94.apk

    ML Manager Pro是可自定义的APK管理器,适用于具有Root访问权限的Android:提取任何已安装的应用程序,将其标记为收藏,轻松共享.apk文件以及更多其他功能。 功能: •提取所有已安装和系统的应用程序并将其另存为...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色...

    java8看不到源码-AndroidFilePickerLibrary:基于Android存储访问框架(SAF)的轻量级文件选择器库

    具有持久的读写权限,因此调用应用程序可以根据需要访问该文件,而无需担心任何运行时存储权限。 在上面的视频和屏幕截图中,您可以看到该应用程序在未启用存储权限的情况下运行良好。 下载 implementation 'io....

    疯狂Android讲义.part2

    第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 ...

    疯狂Android讲义.part1

    第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装Eclipse和ADT插件 7 ...

    Google Android SDK开发范例大全的目录

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable定义颜色...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    2.3 Android应用程序架构——从此开始 2.4 可视化的界面开发工具 2.5 部署应用程序到Android手机 第3章 用户人机界面 3.1 更改与显示文字标签——TextView标签的使用 3.2 更改手机窗口画面底色——drawable...

    精通Android 3 (中文版)2/2

    2.5 剖析Android应用程序的结构  2.6 分析Notepad应用程序  2.6.1 加载和运行Notepad应用程序  2.6.2 分解应用程序  2.7 了解应用程序生命周期  2.8 调试应用程序  2.8.1 启动模拟器  2.8.2 ...

Global site tag (gtag.js) - Google Analytics