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中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

聊聊springboot中如何自定义消息转换器

《聊聊springboot中如何自定义消息转换器》SpringBoot通过HttpMessageConverter处理HTTP数据转换,支持多种媒体类型,接下来通过本文给大家介绍springboot中... 目录核心接口springboot默认提供的转换器如何自定义消息转换器Spring Boot 中的消息

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

Linux中的自定义协议+序列反序列化用法

《Linux中的自定义协议+序列反序列化用法》文章探讨网络程序在应用层的实现,涉及TCP协议的数据传输机制、结构化数据的序列化与反序列化方法,以及通过JSON和自定义协议构建网络计算器的思路,强调分层... 目录一,再次理解协议二,序列化和反序列化三,实现网络计算器3.1 日志文件3.2Socket.hpp