18

考虑这种假设情况:

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

两个问题:

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

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

4

1 回答 1

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

有 2 种可能的方法可以让这种情况发生。Bob 的应用程序在前台,而 Eve 的应用程序在后台连接到它,假设 Eve 的应用程序在后台运行。或者,Bob 的应用程序在后台运行,而 Eve 的应用程序在前台连接到它。

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

您可能想阅读 Apple关于网络和多任务处理的技术说明中的“Beyond The Basics”

  1. 嗅探流量需要 root 访问权限,除非 Eve 的应用程序是越狱应用程序,否则无法完成。

在文章Wireshark CapturePrivileges的“BSD(包括 Mac OS X)”部分中,它指出在 BSD 系统上,我们需要有权访问 BPF 设备以捕获数据包(阅读:嗅探网络流量)。只有 root(或任何超级用户)可以访问 BPF 设备,或者授予任何其他用户访问它们的权限。

于 2012-12-06T03:58:47.030 回答