首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PendingIntent.getBroadcast()安全问题?

PendingIntent.getBroadcast()安全问题?
EN

Stack Overflow用户
提问于 2016-05-02 18:02:05
回答 1查看 1.1K关注 0票数 3

我在看文档 for PendingIntent.getBroadcast(Context, int, Intent, int),它提到.

出于安全考虑,您在这里提供的意图几乎总是明确的意图,即指定要通过Intent.setClass传递给的显式组件。

具体的安全原因是什么?如果其他应用程序仍然可以使用您的包名和组件的名称创建一个应用程序,那么如何使显式Intent更安全呢?

我在NIST.gov上看到了一篇关于PendingIntent-based 安全漏洞的报告,它影响了整个Android4.x,在那里,恶意应用程序可以作为系统用户发送意图。然而,我不确定同样的担忧是否适用于我的应用程序。

如果IntentBroadcastReceiver处理,而Intent不用于传递数据(例如,作为额外的数据),那么还存在风险吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-02 18:17:47

我猜他们真正的意思是:

出于安全考虑,您在这里提供的意图几乎都应该是指向非导出组件Intent 的显式,即指定要通过Intent.setClass传递的显式组件。

您对“其他应用程序仍然可以使用您的包名和组件名称创建一个应用程序”的关注只有在组件被导出时才有效。对于BroadcastReceiver,只有当它具有<intent-filter> (或者IntentFilter,如果通过registerReceiver()注册)时,默认情况下它才会被导出。

如果一个意图是由一个BroadcastReceiver处理的,并且这个意图不是用来传递数据的(例如,作为额外的),那么还存在风险吗?

坦率地说,使用隐式Intents有两个风险

  1. 在发送端,任何人都可以对你的广播作出反应。虽然您可能认为广播的存在本身并不是隐私/安全漏洞--而且在您的具体情况下,它可能不是泄漏--但这并不是普遍正确的。
  2. 在接收端,如果您的组件被导出(默认情况下它可以处理隐式Intent),其他方可能会发送假广播,可能会欺骗您做一些不幸的事情。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36988723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档