Android wear rogue app listening for path variable - 如何防御

Android wear rogue app listening for path variable - how to defend against

假设我有一个 android wear 应用程序来扩展我的应用程序。现在我发布了我的应用程序,用户正在使用它。该应用程序向所有连接的节点发送一条消息,如下所示:

//例如。将字符串发送到 android wear 网络上的所有连接节点:

NodeApi.GetConnectedNodesResult nodes = Wearable.NodeApi.getConnectedNodes( apiClient ).await();
String myMessage= "A cool Message";
for(Node node : nodes.getNodes()) {
   MessageApi.SendMessageResult result = Wearable.MessageApi.sendMessage(
         apiClient, node.getId(), path, myMessage.getBytes() ).await();
//where path variable can be a string such as “/cool_message”
}

世界上一切都很好,因为只有连接的节点才能收到消息,并且它们必须知道路径变量“/cool_message”

现在假设有一个流氓应用程序,它也有一个可穿戴设备及其连接的节点。并假设它不过滤路径,因此它在收听时会收到所有消息。我如何保护其他可穿戴应用程序不看到我的消息。流氓可穿戴应用程序监听代码如下所示:

@Override
public void onMessageReceived(MessageEvent messageEvent) {

        Intent startIntent = new Intent(this, MainActivity.class);
        startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startIntent.putExtra("DATA", messageEvent.getData());
        startActivity(startIntent);

}

请注意,我这里没有呼叫 if (messageEvent.getPath().equals(“/cool_message”))。所以流氓可穿戴设备可以监听任何消息。我如何不向这个节点广播我的消息?有防御吗?

磨损框架在使用相同证书签名且具有相同包名称的应用程序之间传递消息,因此只有您的应用程序可以看到您的应用程序在不同节点上发送的消息,无论路径如何,等等。因此,如果使用两个不同证书签名的两个应用程序使用相同的路径,则每个应用程序只能看到自己的消息。