Android穿流氓app听路径变量 - 如何抵御

时间:2015-10-16 17:25:00

标签: android wear-os

让我们假设我有一个扩展我的应用程序的Android服装应用程序。现在我发送我的应用程序,用户正在使用它。该应用程序向所有连接的节点发送消息,如下所示:

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

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”

现在假设有一个流氓app也有一个可穿戴设备和一个连接节点。并且假设它不是为路径过滤,所以它在收听时获取所有消息。如何保护其他可穿戴应用无法看到我的消息。流氓可穿戴应用程序监听代码将如下所示:

@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”)) 。所以流氓可穿戴者可以收听任何消息。我怎么不广播我的消息到这个节点?有辩护吗?

1 个答案:

答案 0 :(得分:1)

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