考虑这种假设情况:
鲍勃和夏娃的应用程序安装在同一部iPhone上。 Bob的应用程序正在运行并绑定到localhost:8080以侦听来自其自己UIWebView
的AJAX调用。 Eve的应用程序在后台运行,并试图通过向localhost:8080进行AJAX调用来干扰Bob的应用程序。
两个问题:
假设Eve的应用程序知道Bob的AJAX API,她的调用会成功吗? (即本地主机上的iOS沙箱流量是什么?)
Eve的应用程序是否有可能嗅到Bob的应用程序正在产生的流量?
答案 0 :(得分:5)
有两种可能的方法可以实现这一点。由于Eve的应用程序在后台运行,因此Bob的应用程序位于前台,Eve的应用程序在后台连接到它。或者,Bob的应用程序在后台运行,Eve的应用程序在前台连接到它。
默认情况下,iOS会在后台暂停应用。如果应用程序使用后台执行,并继续在后台运行,它可以像往常一样访问网络。
您可能希望在Apple的technical notes on Networking and Multitasking
中阅读“Beyond The Basics”在文章Wireshark CapturePrivileges的“BSD(包括Mac OS X)”一节中,它指出在BSD系统上我们需要有权访问BPF设备以捕获数据包(读取:嗅探网络流量)。只有root(或任何超级用户)才能访问BPF设备,或授予任何其他用户访问它们的权限。