3

跟进我之前关于在运行时执行 android 权限的问题,我发现在 android 中有许多不同的方法可以让应用程序验证调用(客户端)应用程序所拥有的权限。这包括 checkCallingPermission、checkCallingOrSelfPermission、checkCallingUriPermission、checkCallingOrSelfUriPermission、checkPermission、checkUriPermission 等调用。就我浏览android 文档而言,我只能找到这些与运行时权限检查有关的调用。我的问题:

  • 有没有其他方法(而不是使用上述调用)来动态检查调用者的权限?如果有任何此类电话,请提供信息/链接或列出它们。
  • checkCallingOrSelfPermission的描述 说

如果您当前没有处理 IPC,它会授予您自己的权限。小心使用!

这似乎是有风险的,因为它可能有助于将(危险)权限委派给调用进程,这可能导致权限提升(如果使用不慎)。请让我知道我是否正确地说这可能导致特权升级攻击。

  • 我不明白为什么一个进程(正在运行的应用程序)会检查它是否拥有某些权限(它很清楚它有权做什么?)。请让我知道这个特定方法设计背后的直觉:checkCallingOrSelfPermission。(简单地说,为什么/什么时候需要 checkCallingOrSelfPermission?)
4

1 回答 1

3

Android中有两种权限检查机制。

一种是每个进程的运行时动态检查,另一种是每个包的静态检查。你提到的所有关于运行时动态的东西都是在 Context 中实现的,另一个版本是在 PackageManager 中。-检查权限

你想要的是检查一个特定的包是否有一个特定的权限,checkPermission就是答案。有关更详细的描述,Android 开发者网站上有一篇关于此主题的文章。- http://developer.android.com/guide/topics/security/permissions.html#declaring

在许多情况下,您不需要使用动态权限检查方法,只有当您正在使用一个提供商来将一些私人文件共享给特定客户端、远程服务或一些小部件时才需要 - 通过 Intent 或 IPC 与临时权限授予系统相关的东西.

而且,对于您之前关于android:permisson 中的多个权限的问题,还有一个问题。应用程序有一种方法可以在清单中定义他们想要的权限列表。

检查- http://developer.android.com/guide/topics/manifest/uses-permission-element.html

于 2013-08-26T02:46:41.913 回答