iOS - 是否可以通过本地主机之间实现应用程序通信?

18

考虑下面这个假设情况:

Bob和Eve的应用程序都安装在同一部iPhone上。Bob的应用程序正在运行,并绑定到localhost:8080以侦听来自其自己的UIWebView的AJAX调用。Eve的应用程序在后台运行,并尝试通过对localhost:8080进行AJAX调用来干扰Bob的应用程序。

两个问题:

  1. 假设Eve的应用程序知道Bob的AJAX API,她的调用会成功吗?(即iOS是否会沙盒化localhost的流量?)

  2. Eve的应用程序是否可以嗅探Bob的应用程序生成的流量?


那是一个非常好的问题。令人害怕的好。 - RonLugge
哇..那很有趣。我做了一些搜索,但没有找到立即的答案。如果你找到了,请发布答案,因为我也想知道。我会假设它是沙箱化的,因为如果不是,这似乎是一个有点疏忽的问题。 - Bergasms
试一试。获取答案的最佳方式是组合两个这样的应用程序,看看会发生什么。 - rmaddy
1个回答

5
  1. 如果Bob的应用正在运行,Eve的应用可以连接它。

有两种可能的方法可以实现这一点。要么Bob的应用在前台,Eve的应用在后台连接它,前提是Eve的应用在后台运行。或者,Bob的应用在后台运行,Eve的应用在前台连接它。

默认情况下,iOS会挂起后台应用。如果应用程序利用后台执行,并继续在后台运行,它可以像往常一样访问网络。

您可能需要阅读苹果公司关于网络和多任务处理的技术笔记中的“基础知识之外”章节。

  1. 嗅探流量需要root访问权限,除非Eve的应用是越狱应用,否则无法完成。
在文章Wireshark CapturePrivileges的“BSD(包括Mac OS X)”部分中,它指出在BSD系统上我们需要许可才能访问BPF设备以捕获数据包(即:嗅探网络流量)。只有根用户(或任何超级用户)可以访问BPF设备,或授予其他用户访问权限。

非常好的答案。这证实了我的猜测。越狱应用是我在这里主要关注的问题,因此这是非常相关的信息。看起来如果Bob担心这个问题,他最好的选择是使用HTTPS或类似的方式来保护流量。 - Ryan J. Thompson
由于这牵涉到安全问题(恶意应用连接到另一个应用程序的服务器,或者在后台欺骗另一个应用程序的服务器,使受害者连接到后台的恶意服务器),您是否知道苹果是否曾经解决过这个问题?我知道,例如,Win10应用程序(包括手机上的应用程序)默认具有沙盒网络;苹果是否已经添加了类似的东西? - CBHacking
只有应用程序在同一应用组中才能使用套接字IPC。伯克利套接字是文件描述符,这些文件被沙盒化了。请参见https://dev59.com/O8Lrs4cB2Jgan1znz1UN#53011775。 - Garvan Keeley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接