iOS - 是否可以通过localhost在应用程序之间进行通信?

Rya*_*son 18 networking ios

考虑这个假设情况:

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

两个问题:

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

  2. Eve的应用程序是否有可能嗅到Bob的应用程序正在产生的流量?

how*_*ghk 5

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

有两种可能的方法来实现这一点.由于Eve的应用程序在后台运行,因此Bob的应用程序位于前台,Eve的应用程序在后台连接到它.或者,Bob的应用程序在后台运行,Eve的应用程序在前台连接到它.

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

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

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

Wireshark CapturePrivileges一文的"BSD(包括Mac OS X)"一节中,它指出在BSD系统上我们需要有权访问BPF设备以捕获数据包(读取:嗅探网络流量).只有root(或任何超级用户)才能访问BPF设备,或授予任何其他用户访问它们的权限.