`
notfatboy
  • 浏览: 237250 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Security and Permissions安全与权限(五)

阅读更多

Enforcing Permissions in AndroidManifest.xml

High-level permissions restricting access to entire components of the system or application can be applied through your AndroidManifest.xml . All that this requires is including an android:permission attribute on the desired component, naming the permission that will be used to control access to it.

Activity permissions (applied to the <activity> tag) restrict who can start the associated activity. The permission is checked during Context.startActivity() and Activity.startActivityForResult() ; if the caller does not have the required permission then SecurityException is thrown from the call.

用于限制进入系统或应用程序的Components的高层permissions可以再AndroidManifest.xml中实现.所有这些都可以通过在相应的component中包含 android:permission 属性,命名该permission以使其被用以控制进入的权限。

Activity permissions 限制了谁才可以启动相应的activity. permission会在Context.startActivity()Activity.startActivityForResult() 的时候进行检查。如果caller没有所需的权限,则会抛出一个SecurityException。

 

Service permissions (applied to the <service> tag) restrict who can start or bind to the associated service. The permission is checked during Context.startService() , Context.stopService() and Context.bindService() ; if the caller does not have the required permission then SecurityException is thrown from the call.

BroadcastReceiver permissions (applied to the <receiver> tag) restrict who can send broadcasts to the associated receiver. The permission is checked after Context.sendBroadcast() returns, as the system tries to deliver the submitted broadcast to the given receiver. As a result, a permission failure will not result in an exception being thrown back to the caller; it will just not deliver the intent. In the same way, a permission can be supplied to Context.registerReceiver() to control who can broadcast to a programmatically registered receiver. Going the other way, a permission can be supplied when calling Context.sendBroadcast() to restrict which BroadcastReceiver objects are allowed to receive the broadcast (see below).

Service permissions用于限制谁才可以start或bind该service。在Context.startService() , Context.stopService()Context.bindService() 调用的时候会进行权限检查。如果caller没有所需的权限,则会抛出一个SecurityException。

BroadcastReceiver permissions用于限制谁才可以向该receiver发送广播。权限检查会在Context.sendBroadcast() 返回时进行,由系统去发送已经提交的广播给相应的Receiver。最终,一个permission failure不会再返回给Caller一个exception;它只是不会去deliver该Intent而已。同样地,Context.registerReceiver() 也可以有自己permission用于限制谁才可以向一个在程序中注册的receiver发送广播。另一种方式是,一个permission也可以提供给Context.sendBroadcast() 用以限制哪一个BroadcastReceiver才可以接收该广播。

 

ContentProvider permissions (applied to the <provider> tag) restrict who can access the data in a ContentProvider . (Content providers have an important additional security facility available to them called URI permissions which is described later.) Unlike the other components, there are two separate permission attributes you can set: android:readPermission restricts who can read from the provider, and android:writePermission restricts who can write to it. Note that if a provider is protected with both a read and write permission, holding only the write permission does not mean you can read from a provider. The permissions are checked when you first retrieve a provider (if you don't have either permission, a SecurityException will be thrown), and as you perform operations on the provider. Using ContentResolver.query() requires holding the read permission; using ContentResolver.insert() , ContentResolver.update() , ContentResolver.delete() requires the write permission. In all of these cases, not holding the required permission results in a SecurityException being thrown from the call.

ContentProvider permission用于限制谁才可以访问ContentProvider提供的数据。(Content providers有一套而外的安全机制叫做URI permissions,这些在稍后讨论)不同于其它的Components,这里有两种不同的permission属性可以设置: android:readPermission 用于限制谁可以读取provider中的数据,而 android:writePermission 用于限制谁才可以向provider中写入数据。需要注意的是如果provider既被read permis保护,也被write permission保护的话,如果这时只有write permission并不意味着你就可以读取provider中的数据了。当你第一次获取provider的时候就要进行权限检查(如果你没有任何permission,则会抛出SecurityException), 并且这时你对provider执行了某些操作。当使用 ContentResolver.query() 时需要读权限,而当使用 ContentResolver.insert() , ContentResolver.update() , ContentResolver.delete() 时需要写权限。在所有这些情况下,没有所需的permission将会导致SecurityException 被抛出。

 

分享到:
评论

相关推荐

    Security Managers and Permissions

    3. 检查权限:对比当前操作所需的权限与策略文件中赋予的权限。 4. 决策:如果代码有执行该操作的权限,那么操作继续;否则,抛出`java.security.AccessControlException`异常。 在实际应用中,我们可以通过以下...

    Android开发—知识点精讲10—签名、权限、组件安全、文件与用户安全视频教程下载(15课程).txt

    #### 文件与用户安全(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_

    标题中的“Document-security-and-permissions.rar”提示我们这个压缩包主要关注的是文档安全与权限管理,这在操作系统中是至关重要的部分,特别是对于多用户环境如Windows、Unix和Linux而言。接下来,让我们深入...

    Fratantonio-Cloak-And-Dagger-From-Two-Permissions-To-Complete-C

    【Fratantonio-Cloak-And-Dagger-From-Two-Permissions-To-Complete-Control-Of-The-UI-Feedback-Loop】 这篇论文是关于移动安全领域的一个重要研究,由Yanick Fratantonio与其他研究人员合作完成,并在2017年的...

    文件及文件夹权限设置(vb.net)

    `System.Security.AccessControl`命名空间提供了`FileSystemSecurity`类,它允许我们直接操作文件和目录的安全描述符,以设置NTFS权限。`FileSystemAccessRule`用于定义具体的访问规则。 ```vbnet Dim dir As New ...

    Java动态权限管理

    Spring Security是Java领域中用于安全控制的主流框架,它提供了强大的动态权限管理功能。通过配置或编程方式,可以实现基于URL、方法或业务对象的访问控制。Spring Security的核心概念包括认证(Authentication)和...

    Java EE Security (JSR-375) Reference Implementation.zip

    3. **Roles and Permissions**: JSR 375引入了更强大的角色和权限管理。除了传统的基于角色的安全性(RBAC),它还支持基于资源的访问控制(RBAC),使得权限管理更加灵活和精确。 4. **IdentityStore**: 这是一个...

    spring-security

    4. **Roles and Permissions**: 在 Spring Security 中,角色(Role)和权限(Permission)用于定义用户可以执行的操作。角色通常是一组权限的集合,而权限是具体的操作,如 "READ_FILE" 或 "UPDATE_USER"。 5. **...

    JSP 权限管理系统

    3. **角色与权限(Roles and Permissions)**:系统将用户分为不同的角色,如管理员、普通用户等,每个角色拥有不同的操作权限。权限是预定义的规则,定义了用户可以执行哪些操作,例如查看、编辑、删除等。 4. **...

    JAVA 2平台安全技术-结构,API设计和实现

    - 安全上下文(Security Context):记录当前线程的安全信息,如执行主体(Principal)和其权限。 - 认证与授权:JAAS提供了一种框架,允许应用程序进行用户身份验证和角色授权。 6. **实践应用**: - Web应用...

    sun权限管理说明文档

    在IT行业中,权限管理是确保系统安全性和数据保护的关键环节。在"Sun Java System Application Server Enterprise Edition 8.2 管理指南"中,它详细介绍了如何在Sun的Java应用服务器环境中实施有效的权限控制。这...

    JAVA安全性第二部分 认证与授权

    例如,Java Authentication and Authorization Service (JAAS) 提供了实现不同认证协议(如Kerberos、NTLM或SSL/TLS)的接口和类,使得应用可以与各种安全域进行交互。 接下来,我们讨论授权(Authorization)。...

    JAVA安全相关资料

    Java Security Model由类加载器、权限检查和安全管理器组成。 2. **类加载器**:Java的类加载器负责加载和验证类文件,它是安全模型的关键组成部分。不同的类加载器有不同的权限范围,这有助于隔离和控制不同来源的...

    JJAVA2平台安全技术-结构API设计和实现.rar

    3. **安全管理者(Security Manager)**:Java应用程序可以设置一个安全管理者,它执行权限检查以确定代码是否被授权执行特定操作。这是Java安全模型的关键组件。 4. **权限(Permissions)**:权限定义了代码可以...

    基于Java的两个通用安全模块的设计与实现.rar

    标题中的“基于Java的两个通用安全模块的设计与实现”表明这是一个关于使用Java编程语言来构建安全功能的项目。在Java中,安全性是至关重要的,尤其是对于网络应用、服务器端编程或者处理敏感用户数据的情况。本设计...

    flask-security:Flask应用程序的快速简单安全性

    **Flask-Security:快速构建Flask应用的安全性** Flask-Security是针对Python的轻量级Web框架Flask的一个扩展,它简化了在Flask应用中集成安全特性的过程。尽管这个项目已经不再维护,但其源代码和文档仍然可以作为...

    JavaSecuritySolutions

    10. **Java权限(Permissions)**:`java.security.Permission`类及其子类(如`FilePermission`、`SocketPermission`等)表示特定的操作权限。`java.security.ProtectionDomain`则包含了一组权限和认证信息。 11. *...

    liferay 4.0 userguide.pdf

    #### 三、安全性和权限(Security and Permissions) 安全性与权限是Liferay的重要组成部分,确保数据安全的同时还能够灵活地分配权限。 ##### 引言(Introduction) - **实体定义(Entity Definitions)**:包括资源...

    阿里技术分享 Android中的应用程序沙箱 共30页.pptx

    Android 平台还提供了多种安全机制,如 System Partition and Safe Mode、Filesystem Permissions、Filesystem Encryption、Password Protection、Device Administration、Memory Management Security Enhancements...

Global site tag (gtag.js) - Google Analytics