4.3.2 创建/使用内容供应器 规则书

原书:Android Application Secure Design/Secure Coding Guidebook

译者:飞龙

协议:CC BY-NC-SA 4.0

实现或使用内容供应器时,确保遵循以下规则。

4.3.2.1 仅仅在应用中使用的内容供应器必须设为私有(必需)

仅供单个应用使用的内容供应器不需要被其他应用访问,并且开发人员通常不会考虑攻击内容供应器的访问。 内容供应器基本上是共享数据的系统,因此它默认处理成公共的。 仅在单个应用中使用的内容供应器应该被显式设置为私有,并且它应该是私有内容供应器。 在 Android 2.3.1(API Level 9)或更高版本中,通过在provider元素中指定android:exported="false",可以将内容供应器设置为私有。

AndroidManifest.xml

<!-- *** POINT 1 *** Set false for the exported attribute explicitly. -->
<provider
android:name=".PrivateProvider"
android:authorities="org.jssec.android.provider.privateprovider"
android:exported="false" />

4.3.2.2 小心并安全地处理收到的请求参数(必需)

风险因内容供应器的类型而异,但在处理请求参数时,你应该做的第一件事是输入验证。

虽然内容供应器的每个方法,都有一个接口,应该接收 SQL 语句的成分参数,但实际上它只是交给系统中的任意字符串,所以需要注意内容供应器方需要假设,可能会提供意外的参数的情况。

由于公共内容提供应器可以接收来自不受信任来源的请求,因此可能会受到恶意软件的攻击。 另一方面,私有内容供应器永远不会直接收到来自其他应用的任何请求,但是目标应用中的公共活动,可能会将恶意意图转发给私有内容供应器,因此你不应该认为,私有内容供应器不能 接收任何恶意输入。 由于其他内容供应器也有将恶意意图转发给他们的风险,因此有必要对这些请求执行输入验证。

请参阅“3.2 小心和安全地处理输入数据”。

4.3.2.3 验证签名权限由内部定义之后,使用内部定义的签名权限(必需)

确保在创建内容供应器时,通过定义内部签名权限,来保护你的内部内容供应器。 由于在AndroidManifest.xml文件中定义权限或声明权限请求,没有提供足够的安全性,请务必参考“5.2.1.2 如何使用内部定义的签名权限在内部应用之间进行通信”。

4.3.2.4 返回结果时,请注意来自目标应用的结果的信息泄露的可能性(必须)

query()或插入insert()的情况下,CursorUri作为结果信息返回到发送请求的应用。 当敏感信息包含在结果信息中时,信息可能会从目标应用泄露。 在update()delete()的情况下,更新/删除记录的数量作为结果信息返回给发送请求的应用。 在极少数情况下,取决于某些应用的规范,更新/删除记录的数量具有敏感含义,请注意这一点。

4.3.2.5 提供二手素材时,素材应该以相同级别的保护提供(必需)

当受到权限保护的信息或功能素材,被另一个应用提供时,你需要确保它具有访问素材所需的相同权限。 在 Android OS 权限安全模型中,只有已被授予适当权限的应用,才能直接访问受保护的素材。 但是,存在一个漏洞,因为具有素材权限的应用可以充当代理,并允许非特权应用的访问。 基本上这与重授权限相同,因此它被称为“重新授权”问题。 请参阅“5.2.3.4 重新授权问题”。

4.3.2.6 小心并安全地处理来自内容供应器的返回的结果数据(必需)

风险因内容供应器的类型而异,但在处理请求参数时,你应该做的第一件事是输入验证。

如果目标内容供应器是公共内容供应器,伪装成公共内容供应器的恶意软件可能会返回攻击性结果数据。 另一方面,如果目标内容供应器是私有内容供应器,则其风险较小,因为它从同一应用接收结果数据,但不应该认为,私有内容供应器不能接收任何恶意输入。 由于其他内容供应器也有将恶意数据返回给他们的风险,因此有必要对该结果数据执行输入验证。

请参阅“3.2 小心和安全地处理输入数据”。

安卓应用安全指南 4.3.2 创建/使用内容供应器 规则书相关推荐

  1. 安卓应用安全指南 4.3.1 创建/使用内容供应器 示例代码

    4.3.1 创建/使用内容供应器 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC ...

  2. 安卓应用安全指南 4.4.3 创建/使用服务高级话题

    安卓应用安全指南 4.4.3 创建/使用服务高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC ...

  3. 安卓应用安全指南 4.4.2 创建/使用服务 规则书

    安卓应用安全指南 4.4.2 创建/使用服务 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC ...

  4. 安卓应用安全指南 4.1.3 创建/使用活动 高级话题

    4.1.3 创建/使用活动 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA ...

  5. 安卓应用安全指南 4.1.2 创建/使用活动 规则书

    4.1.2 创建/使用活动 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA ...

  6. 安卓应用安全指南 4.4.1 创建/使用服务 示例代码

    4.4.1 创建/使用服务 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA ...

  7. 安卓应用安全指南 4.2.2 创建/使用广播接收器 规则书

    4.2.2 创建/使用广播接收器 规则书 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC- ...

  8. 安卓应用安全指南 4.1.1 创建/使用活动 示例代码

    4.1.1 创建/使用活动 示例代码 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC-SA ...

  9. 安卓应用安全指南 4.2.3 创建/使用广播接收器 高级话题

    4.2.3 创建/使用广播接收器 高级话题 原书:Android Application Secure Design/Secure Coding Guidebook 译者:飞龙 协议:CC BY-NC ...

最新文章

  1. Linux(CentOS)目录操作命令、文件操作命令、压缩解压缩命令
  2. SQL Cookbook:一、检索记录(13)按模式搜索
  3. 如果在我爸的朋友圈当杠精,会挨揍吗?
  4. 树形结构 —— 树与二叉树 —— 树的直径
  5. 数组排列组合算法汇总
  6. 【个人笔记】OpenCV4 C++ 图像处理与视频分析 10课
  7. 用tomcat搭建https
  8. live555源码编译(win7+vs2010)
  9. TFS2018环境搭建一硬件要求
  10. 计算机 考 二级结构工程师,下半年河北省结构工程师二级专业结构:计算机软件的组成及功能考试试题.doc...
  11. 软件工程毕业设计 毕设课题选题题目汇总
  12. linux ps 2鼠标驱动,佳能 PS/2 TrackPoint 驱动程序下载-更新佳能软件(鼠标)
  13. 学生学籍查询窗体知识点
  14. gyb优化事项(2)
  15. 发酵罐设计软件测试,发酵罐设计的心得体会
  16. JSON字符串与protobuf互转
  17. 深入浅出C语言程序设计pdf
  18. 站长利好,迅雷宣布开放“迅雷下载JS-SDK”
  19. matlab三元一次,急!!!用matlab怎么解三元一次方程
  20. ADSL 各种拨号错误代码解析

热门文章

  1. (08)Verilog HDL同步复位
  2. java求二阶微积分方程特解_Scipy:实现微分方程的两种方法:两种不同的解决方案:回答...
  3. 嵌入式串口打印信息重定向到当前终端界面
  4. 2026.静态分析工具pclint
  5. 【openMV】算法矫正镜头+视频格式对应的分辨率
  6. TCP协议的部分解析(2)
  7. Netfilter框架
  8. gettimeofday函数使用《代码》
  9. [C++] - C++11 多线程 - Thread
  10. java8 functionalinterface注解_@FunctionalInterface注解的使用