我想开发两个将通过意图(在同一设备上)进行通信的Android应用程序。
当这两个应用程序传输机密数据时,它们是否应该对其进行加密?
或者 Android 操作系统是否保证(或至少尝试保证)除了发送者和接收者之外的任何人都看不到意图数据?
当然,假设用户总是选择我的应用作为意图的接收者。
假设两个应用程序都已安装,这应该可以防止命名空间劫持。
我想开发两个将通过意图(在同一设备上)进行通信的Android应用程序。
当这两个应用程序传输机密数据时,它们是否应该对其进行加密?
或者 Android 操作系统是否保证(或至少尝试保证)除了发送者和接收者之外的任何人都看不到意图数据?
当然,假设用户总是选择我的应用作为意图的接收者。
假设两个应用程序都已安装,这应该可以防止命名空间劫持。
不,Android 操作系统不保证任何人都看不到意图数据。任何实现意图过滤器的恶意应用程序都能够接收消息,从而获取您的敏感数据。加密数据是个好主意,但请确保:
此外,请确保只有打算接收消息(通过意图)的应用程序正在接收意图,并且没有其他应用程序能够接收该意图。如果您想传递机密数据并且如果您知道将通过意图进行通信的应用程序的类名称,则可以使用意图的方法确保只有该特定应用程序接收setClassname()
意图。例如:
Intent i = new Intent();
i.setClassName(“your.pkg.name”, “your.pkg.name.Destination”);
或者让只有特定权限的应用程序接收意图。例如:
Intent i = new Intent();
i.setAction(“your.own.action”);
sendBroadcast(i, “your.own.permission”);
资料来源:“使用 Google Android 上吊的七种方法”(Defcon 19)