【问题标题】:can two applications in android communicate using local sockets?android 中的两个应用程序可以使用本地套接字进行通信吗?
【发布时间】:2014-05-17 22:31:53
【问题描述】:

我在 android 文档中有一个问题,提到 android 进程可以使用本地套接字进行通信。这是否意味着具有不同用户 ID 的两个应用程序可以使用本地套接字进行通信并通过“绕过”沙箱进行通信?

【问题讨论】:

  • 你能分享一个文档链接吗?
  • 从根本上说,试图阻止合作应用程序共享数据是一个失败的提议,因为它很快就会开始阻碍基本功能,同时对于坚决的规避仍然很弱。如果 Android 用户首先能够让他们能够对不合理的应用程序访问私有数据进行逐项否决,那么他们将获得更好的服务。
  • 那么您认为沙盒不会提供任何保护,防止应用程序使用本地套接字与其他应用程序通信吗?
  • 历史上没有。有可能在最近的多用户修改中添加了这样的内容,但希望不会因为这样的措施往往会限制合法使用,同时对误用几乎没有障碍。通常不会意外打开套接字。

标签: android security sockets


【解决方案1】:

确实可以在 Android 上使用本地套接字进行 IPC,请参阅 LocalSocketServerLocalSocket 类。这些转换为抽象命名空间中的 UNIX 套接字。

但有一点警告:三星已开始在某些情况下通过 SELinux 在其最新固件中限制本地套接字的使用(不幸的是,他们不使用与 AOSP 相同的策略)。我对细节并不完全清楚,但我已经看到 SELinux 阻止本地套接字连接这些固件的实例。可能取决于尝试使用不匹配的本地套接字的不同进程的 SELinux 上下文。如果你最终走这条路,一定要测试一下。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2018-10-25
相关资源
最近更新 更多