如何在跨应用程序发送Intent数据时保护它们

use*_*397 11 security encryption android android-intent

我正在研究我的Android应用程序的安全方面.

我想知道在将一个应用程序从一个应用程序发送到另一个应用程序时保护Intent数据和附加内容的方法,这样除了这两个应用程序之外没有其他应用程序可以窥探它.

其中一种暴力方法是使用android的加密 - 解密来编码意图数据,是否有更好的方法来实现相同的?

提前致谢.

Lau*_*nt' 5

正如其他答案中所指出的,虽然您可以将Intent发送给完全限定的Activity,但没有任何东西阻止某人使用相同的包创建应用程序.

您可能希望为此方案添加其他安全步骤:

  • 首先向远程活动发送"挑战"意图(例如,应该使用共享密码将您提供的随机字符串加密并发送给您)

  • 如果第一个安全步骤正常,您可以使用其完全限定的活动自由地将未加密的消息发送到此远程应用程序.

这是非常蹩脚的安全性,它可能足以满足您的需求.


请看下面的CommonsWare评论.

一种更安全的方式可能是将您的活动编码为绑定服务,保持挑战步骤,但在更私密的沟通意义内.

  • "没有什么可以阻止某人创建具有相同包的应用程序" - 请注意,两个应用程序不能同时安装在同一设备上具有相同的包.话虽如此,您的观点非常有效,因为通信渠道的任何一方都可能被替代品欺骗.更不用说所有`Intent`附加功能对所有与`startActivity()`一起使用的`Intents`的应用程序都是可见的(http://commonsware.com/blog/2011/06/30/warning-activity-intent-extras- public.html). (3认同)

Arc*_*hit 0

我的猜测是,如果您使用显式意图,即指定意图发送到的类,那么没有其他类可以拦截该意图并查看其数据。
但是,如果您尝试向其发送信息的应用程序中的类名称发生更改,则此方法可能会失败。