ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

在Android应用中动态检查权限

2019-11-22 22:25:56  阅读:422  来源: 互联网

标签:android-permissions permissions android-manifest android


在我之前的question关于运行时android权限实施的后续研究中,我发现android中有很多方法可以使应用程序验证调用方(客户端)应用程序所拥有的权限.这包括诸如checkCallingPermission,checkCallingOrSelfPermission,checkCallingUriPermission,checkCallingOrSelfUriPermission,checkPermission,checkUriPermission之类的调用.就我经历的android documentation而言,我只能在运行时找到与权限检查有关的这些调用.我的问题:

>还有其他方法(而不是使用上述调用)
动态检查呼叫者的权限?如果有的话
此类电话,请提供信息/链接或将其列出.
> checkCallingOrSelfPermission的描述说

it grants your own permissions if you are not currently processing an
IPC. Use with care!

这似乎很冒险,因为它可能有助于将(危险的)权限委派给调用过程,这可能会导致特权提升(如果使用不当的话).请让我知道我是否正确,这可能会导致特权升级攻击.

>我不明白为什么一个进程(正在运行的应用程序)将检查它是否具有一定的权限(它很想知道它有权做什么?).请让我知道
这种特定方法的设计背后的直觉是:
checkCallingOrSelfPermission. (简单地说,为什么/何时需要
checkCallingOrSelfPermission?)

解决方法:

Android中有两种类型的权限检查机制.

一个是每个进程的运行时动态检查,另一个是每个程序包的静态检查.您提到的所有关于运行时动态的东西都是在Context中实现的,另一个版本是在PackageManager中. –checkPermission

您要检查的是特定程序包是否具有特定权限,答案是checkPermission.有关更详细的描述,Android Developer Site中有一篇有关该主题的文章.
http://developer.android.com/guide/topics/security/permissions.html#declaring

在许多情况下,您不需要使用动态权限检查方法,仅当您正在与一个提供程序共享某些私有文件到特定客户端,远程服务或某些小部件时,才需要使用此方法-通过Intent或IPC进行临时权限授予的系统.

而且,您可以针对前面的有关multiple permissions in android:permisson的问题进行细化.有一种方法可以让应用在Manifest中定义所需权限列表.

校验-
http://developer.android.com/guide/topics/manifest/uses-permission-element.html

标签:android-permissions,permissions,android-manifest,android
来源: https://codeday.me/bug/20191122/2063035.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有