论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
安全
›
终端安全
›
Android体系安全权限
Android体系安全权限
守听
论坛元老
|
2024-8-1 20:37:58
|
显示全部楼层
|
阅读模式
楼主
主题
2077
|
帖子
2077
|
积分
6231
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
Android 安全架构的中心设计点是:在默认情况下任何应用都没有权限执行对其他应用、操作体系或用户有不利影响的任何操作。这包括读取或写入用户的私有数据(例如接洽人或电子邮件)、读取或写入其他应用步伐的文件、执行网络访问、使装备保持叫醒状态等。
从 Android 6.0(API 级别 23)开始,无论您的应用面向哪个 API 级别,您都应对应用举行测试,以验证它在缺少需要的权限时行为是否正常。
应用可以通过 Activity,Fragment,和 Context 类(建议使用 Support 包中的对应类,如 ContextCompat)中三个方法和一个回调,与用户协变更态权限的授权:
对于两个特别权限 SYSTEM_ALERT_WINDOW 和 WRITE_SETTINGS,必须通过下面的方式判断授权情况,并通过 startActivity 来跳转到权限设置页去授权:
对于location权限,还需要通过 LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)判断是否打开定位开关。
在使用 Android 权限时,需要依照以下原则:
1、最少原则,只使用 APP 所必须的权限。可能还有其他方法能实现同样的需求,而无需访问敏感信息。
2、全面原则,应用需考虑第三方库所需的权限,当 APP 包含一个库时,会继承其权限要求。
3、清晰原则,当您发出权限请求时,要让用户明确正在访问的内容以及为什么要访问,以便用户做出明智的决定。
4、显式原则,当您访问敏感功能(例如相机或麦克风)时,提供连续的提示可以让用户清楚您在收集数据,制止让用户感觉您在偷偷收集数据。
例如,您需要用装备的 Camera 来拍照,你可以通过调用 Camera 的 API 来实现这个功能,但是这需要请求 Camera 的权限;你也可以你 Intent 启动 Camera 模块来实现这个功能,但是不需要请求 Camera 的权限。
例如,媒体播放器在通话期间静音或暂停,是使用 PhoneStateListener 监听呼唤状态的更改或监听android.intent.action.PHONE_STATE的广播。该办理方案的问题是它需要 READ_PHONE_STATE权限,这需要用户同意访问敏感数据(例如其装备和 SIM 硬件 ID 以及来电的电话号码)。您可以通过为您的应用请求 AudioFocus 来制止这种情况,因为它不需要明确的权限(因为它不访问敏感信息)。只需将音频切换到后台时所需的代码放在 onAudioFocusChange()变乱处置惩罚步伐中,当操作体系移动切换其音频焦点时它将主动运行。
平凡权限(normal permission):也叫正常权限,即使拥有了该类权限,用户的隐私数据被泄漏窜改的风险也很小。例如,设置时区的权限就是正常权限。如果应用声明其需要正常权限,体系会主动向应用授予该权限。
敏感权限(dangerous permission):也叫伤害权限,运行时权限,跟平凡权限相反,一旦某个应该获取了该类权限,用户的隐私数据就面对被泄漏窜改的风险。好比 READ_CONTACTS 权限就属于伤害权限。如果应用声明其需要伤害权限,则用户必须明确向应用授予该权限。
签名权限(signature permission):该类权限只对拥有相同签名的应用开放,好比手机QQ 自定义了一个permission 且在权限标签中参加 android:protectionLevel=”signature”,而访问它的某个数据时,必须要拥有该权限。然后微信和 QQ 发布时接纳相同的签名,微信就可以申请访问 QQ 中的此权限,并使用对应权限控制的数据。其他步伐即使知道了这个开放数据的接口,也在 Manifest 注册了权限,但由于应用签名不同,还是无法访问的对应的数据。
体系签名权限(signatureOrSystem permission):与 signature permission雷同,但它不光要求签名相同,还要求是同类的体系级应用,一般手机厂商开发的预制应用,才会用到该类权限。
动态权限机制及使用
从 Android 6.0(API级别 23)开始,用户开始在应用运行时向其授予伤害权限,而不是在应用安装时授予。此方法可以简化应用安装过程,因为用户在安装或更新应用时不需要授予权限。用户可以随时进入应用的“Settings”中调整应用的动态权限授权。
在全部版本的 Android 中,您应用都需要在其应用 Manifest 中同时声明它需要的正常权限和伤害权限。不过,该声明的影响因体系版本和应用的 targetSdkVersion的不同而有所差异:
如果装备运行的是 Android 5.1 或更低版本,大概应用的 targetSdkVersion 为 22 或更低:如果您在 Manifest 中列出了伤害权限,则用户必须在安装应用时授予此权限;如果他们不授予此权限,体系根本不会安装应用。如果将新权限添加到更新的应用版本,体系会在用户更新应用时要求授予该权限。用户一旦安装应用,他们撤销权限的唯一方式是卸载应用。
如果装备运行的是 Android 6.0 或更高版本,而且应用的 targetSdkVersion为23 或更高:应用必须在 Manifest 中列出权限,而且它必须在运行时请求其需要的每项伤害权限。用户可以授予或拒绝每项权限,且即使用户拒绝权限请求,应用仍可以继承运行有限的功能。
checkSelfPermission:检查动态权限,返回PackageManager.PERMISSION_GRANTED或PackageManager.PERMISSION_DENIED
shouldShowRequestPermissionRationale:检查用户禁止了此动态权限框跳出,应用之前请求过此权限但用户拒绝了请求,此方法将返回 true。
requestPermissions:请求动态权限,体系会弹出权限授权提示框给用户,用户可以选择授权和拒绝。选择结果通过 Activity 或 Fragment 的 onRequestPermissionsResult 担当。
onRequestPermissionsResult:动态权限申请结果,根据请求的requestCode和grantResults是否PERMISSION_GRANTED来判断用户是否授权。
Settings.canDrawOverlays()。
Settings.System.canWrite()。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
继续阅读请点击广告
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
守听
论坛元老
这个人很懒什么都没写!
楼主热帖
【网络编程】从零开始搭建一个开源博客 ...
Python学习:import的正确用法
Vulnhub靶机-Al-Web-1
【CSDN云VS腾讯云】要不然怎么说CSDN开 ...
TCP协议
jdbc如何连接sqlserver数据库呢? ...
报错building for iOS Simulator, but ...
面试官:BIO、NIO、AIO是什么,他们有 ...
如何成为一名开发人员——第 3 部分: ...
SpringBoot整合SpringSecurityOauth2实 ...
标签云
国产数据库
集成商
AI
运维
CIO
存储
服务器
快速回复
返回顶部
返回列表