URI Permissions
The standard permission system described so far is often not sufficient
when used with content providers. A content provider may want to
protect itself with read and write permissions, while its direct clients
also need to hand specific URIs to other applications for them to operate on.
A typical example is attachments in a mail application. Access to the mail
should be protected by permissions, since this is sensitive user data. However,
if a URI to an image attachment is given to an image viewer, that image viewer
will not have permission to open the attachment since it has no reason to hold
a permission to access all e-mail.
到目前为止我们讨论的标准的permission系统对于content provider来说是不够的。一个content provider可能想保护它的读写权限,而同时与它对应的直属客户端也需要将特定的URI传递给其它应用程序,以便其它应用程序对该URI进行操作。一个典型的例子就是邮件程序处理带有附件的邮件。进入邮件需要使用permission来保护,因为这些是敏感的用户数据。然而,如果有一个指向图片附件的URI需要传递给图片浏览器,那个图片浏览器是不会有访问附件的权利的,因为他不可能拥有所有的邮件的访问权限。
The solution to this problem is per-URI permissions: when starting an
activity or returning a result to an activity, the caller can set
Intent.FLAG_GRANT_READ_URI_PERMISSION
and/or
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
. This grants the receiving activity
permission access the specific data URI in the Intent, regardless of whether
it has any permission to access data in the content provider corresponding
to the Intent.
针对这个问题的解决方案就是per-URI permission: 当启动一个activity或者给一个activity返回结果的时候,呼叫方可以设置Intent.FLAG_GRANT_READ_URI_PERMISSION
和/或
Intent.FLAG_GRANT_WRITE_URI_PERMISSION
.
这会使接收该intent的activity获取到进入该Intent指定的URI的权限,而不论它是否有权限进入该intent对应的content provider。
This mechanism allows a common capability-style model where user interaction
(opening an attachment, selecting a contact from a list, etc) drives ad-hoc
granting of fine-grained permission. This can be a key facility for reducing
the permissions needed by applications to only those directly related to their
behavior.
The granting of fine-grained URI permissions does, however, require some
cooperation with the content provider holding those URIs. It is strongly
recommended that content providers implement this facility, and declare that
they support it through the
android:grantUriPermissions
attribute or
<grant-uri-permissions>
tag.
More information can be found in the
Context.grantUriPermission()
,
Context.revokeUriPermission()
, and
Context.checkUriPermission()
methods.
这种机制允许一个通常的capability-style模型, 这种模型是以用户交互(如打开一个附件, 从列表中选择一个联系人)为驱动,特别获取更细粒化的权限。这是一种减少不必要权限的重要方式,这种方式主要针对的就是那些和程序的行为直接相关的权限。
这些URI permission的获取需要content provider(包含那些URI)的配合。强烈推荐在content provider中提供这种能力,并通过android:grantUriPermissions
或者<grant-uri-permissions>
标签来声明支持。
更多的信息可以参考Context.grantUriPermission()
,
Context.revokeUriPermission()
, and
Context.checkUriPermission()
methods.
这一节翻译的比较费劲,有些感觉翻译的不好,欢迎大家指正。
分享到:
相关推荐
3. 检查权限:对比当前操作所需的权限与策略文件中赋予的权限。 4. 决策:如果代码有执行该操作的权限,那么操作继续;否则,抛出`java.security.AccessControlException`异常。 在实际应用中,我们可以通过以下...
#### 文件与用户安全(File and User Security) - **文件存储安全**:Android提供了多种存储方案,包括内部存储、外部存储和SQLite数据库等。每种方案都有其特点和适用场景,在选择存储方式时需要考虑数据的安全性和...
permissions design is a critical component of any system, and its primary goal is to ensure that each user in the system has the appropriate permissions, thereby ensuring the system's security and ...
标题中的“Document-security-and-permissions.rar”提示我们这个压缩包主要关注的是文档安全与权限管理,这在操作系统中是至关重要的部分,特别是对于多用户环境如Windows、Unix和Linux而言。接下来,让我们深入...
【Fratantonio-Cloak-And-Dagger-From-Two-Permissions-To-Complete-Control-Of-The-UI-Feedback-Loop】 这篇论文是关于移动安全领域的一个重要研究,由Yanick Fratantonio与其他研究人员合作完成,并在2017年的...
`System.Security.AccessControl`命名空间提供了`FileSystemSecurity`类,它允许我们直接操作文件和目录的安全描述符,以设置NTFS权限。`FileSystemAccessRule`用于定义具体的访问规则。 ```vbnet Dim dir As New ...
Spring Security是Java领域中用于安全控制的主流框架,它提供了强大的动态权限管理功能。通过配置或编程方式,可以实现基于URL、方法或业务对象的访问控制。Spring Security的核心概念包括认证(Authentication)和...
3. **Roles and Permissions**: JSR 375引入了更强大的角色和权限管理。除了传统的基于角色的安全性(RBAC),它还支持基于资源的访问控制(RBAC),使得权限管理更加灵活和精确。 4. **IdentityStore**: 这是一个...
4. **Roles and Permissions**: 在 Spring Security 中,角色(Role)和权限(Permission)用于定义用户可以执行的操作。角色通常是一组权限的集合,而权限是具体的操作,如 "READ_FILE" 或 "UPDATE_USER"。 5. **...
3. **角色与权限(Roles and Permissions)**:系统将用户分为不同的角色,如管理员、普通用户等,每个角色拥有不同的操作权限。权限是预定义的规则,定义了用户可以执行哪些操作,例如查看、编辑、删除等。 4. **...
- 安全上下文(Security Context):记录当前线程的安全信息,如执行主体(Principal)和其权限。 - 认证与授权:JAAS提供了一种框架,允许应用程序进行用户身份验证和角色授权。 6. **实践应用**: - Web应用...
在IT行业中,权限管理是确保系统安全性和数据保护的关键环节。在"Sun Java System Application Server Enterprise Edition 8.2 管理指南"中,它详细介绍了如何在Sun的Java应用服务器环境中实施有效的权限控制。这...
例如,Java Authentication and Authorization Service (JAAS) 提供了实现不同认证协议(如Kerberos、NTLM或SSL/TLS)的接口和类,使得应用可以与各种安全域进行交互。 接下来,我们讨论授权(Authorization)。...
Java Security Model由类加载器、权限检查和安全管理器组成。 2. **类加载器**:Java的类加载器负责加载和验证类文件,它是安全模型的关键组成部分。不同的类加载器有不同的权限范围,这有助于隔离和控制不同来源的...
3. **安全管理者(Security Manager)**:Java应用程序可以设置一个安全管理者,它执行权限检查以确定代码是否被授权执行特定操作。这是Java安全模型的关键组件。 4. **权限(Permissions)**:权限定义了代码可以...
标题中的“基于Java的两个通用安全模块的设计与实现”表明这是一个关于使用Java编程语言来构建安全功能的项目。在Java中,安全性是至关重要的,尤其是对于网络应用、服务器端编程或者处理敏感用户数据的情况。本设计...
**Flask-Security:快速构建Flask应用的安全性** Flask-Security是针对Python的轻量级Web框架Flask的一个扩展,它简化了在Flask应用中集成安全特性的过程。尽管这个项目已经不再维护,但其源代码和文档仍然可以作为...
10. **Java权限(Permissions)**:`java.security.Permission`类及其子类(如`FilePermission`、`SocketPermission`等)表示特定的操作权限。`java.security.ProtectionDomain`则包含了一组权限和认证信息。 11. *...
#### 三、安全性和权限(Security and Permissions) 安全性与权限是Liferay的重要组成部分,确保数据安全的同时还能够灵活地分配权限。 ##### 引言(Introduction) - **实体定义(Entity Definitions)**:包括资源...
Android 平台还提供了多种安全机制,如 System Partition and Safe Mode、Filesystem Permissions、Filesystem Encryption、Password Protection、Device Administration、Memory Management Security Enhancements...