Android静态安全检测 - 自定义权限的保护级别

2024-08-29 03:08

本文主要是介绍Android静态安全检测 - 自定义权限的保护级别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

自定义权限的保护级别 - protectionLevel属性


一、Manifest文件中权限相关的知识


1. <uses-permission>标签


【1】语法定义


【2】属性

 android:name    可以是系统的权限名称,也可以是其他APP通过<permission>标签声明的权限名称(用于两个应用之间的交互)

 android:maxSdkVersion   标注该权限所支持的最大API版本号


2. <permission>标签


【1】语法定义


【2】属性

  android:name  自定义的权限名称

  android:label   对权限的简短描述

  android:icon   用来标识权限的图标

  android:description   对权限的更加详细的描述

  android:permissionGroup   权限所属权限组的名称

  android:protectionLevel     权限的保护等级

     - normal

       属性的默认值,代表低风险权限,只要申请了就可以使用(在AndroidManifest.xml中添加<uses-permission>标签),安装时不需要用户确认

     - dangerous

       高风险权限,安装时需要用户的确认才可使用

     - signature

       只有当申请权限的应用程序的数字签名与声明此权限的应用程序的数字签名相同时(如果是申请系统权限,则需要与系统签名相同),才能将权限授给它

     - signatureOrSystem

        签名相同,或者申请权限的应用为系统应用(在system image中),与signature类似,只是增加了rom中自带的app的声明 ,尽量不要使用该选项,因为signature已经适合绝大部分的情况


【3】参考链接


http://blog.csdn.net/self_study/article/details/50074781


3. <uses-permission><permission>的区别


【1】<uses-permission>

  系统权限或者其他APP通过<permission>声明的权限

  调用别人东西的时候,自己需要声明的权限


【2】<permission>

  自定义权限

  别人调用这个程序时,需要用<uses-permission>来声明


【3】示例

  应用A的Manifest文件中声明权限,并注册Broadcast Receiver



应用B发送消息给A,需要在B的Manifest文件中声明使用相应的权限,A才能收到


【4】参考链接


http://blog.csdn.net/lilu_leo/article/details/6940941


http://www.cnblogs.com/lwbqqyumidi/p/3793440.html


4. <permission-tree>标签


【1】语法定义


5. <permission-group>标签


【1】语法定义


6. 参考链接


https://developer.android.com/guide/topics/manifest/permission-element.html


http://blog.csdn.net/self_study/article/details/50074781


二、触发条件


1. 定位AndroidManifest.xml文件中的自定义权限


【1】对应的特征:<permission


2. protectionLevel属性设置为normal


【1】显示设置android:protectionLevel="normal"


【2】默认情况下,属性的值也为normal


三、漏洞原理


【1】自定义权限的保护等级(android:protectionLevel属性)设置为normal,或没有显示设置(默认情况也为normal),可能会导致敏感信息泄露


四、修复建议


【1】建议将自定义权限的保护级别设置为signature或者signatureOrSystem

这篇关于Android静态安全检测 - 自定义权限的保护级别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116667

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Java 线程安全与 volatile与单例模式问题及解决方案

《Java线程安全与volatile与单例模式问题及解决方案》文章主要讲解线程安全问题的五个成因(调度随机、变量修改、非原子操作、内存可见性、指令重排序)及解决方案,强调使用volatile关键字... 目录什么是线程安全线程安全问题的产生与解决方案线程的调度是随机的多个线程对同一个变量进行修改线程的修改操

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码