在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