我正在使用图书馆gcdweberver(https://github.com/swisspol/gcdwebserver(在我的一个项目中流程,出于安全原因。我希望这是iOS应用沙箱可以提供的东西,但事实并非如此。通过文件系统权限,Sandbox似乎是针对Unix域插座(AF_UNIX(强制执行的。但是对于GCDWeberver使用的TCP/IP插座(AF_INET(,似乎没有沙箱。
我能够编写两个示例应用程序 - 客户和服务器(与不同的开发人员证书签名(,并且可以让它们相互通信,而没有任何问题。
我想知道是否有某种方法可以在iOS上执行相同的方法,从本质上讲,在TCP插座上旋转HTTP服务器,但仅接受相同过程的连接。我无法使用UNIX域插座,因为要从HTTP服务器请求内容的客户端是Avplayer,并且它不知道如何连接到我的应用程序的Unix域套接字。
我大约99%肯定您要要求的是不可能的。我什至不认为在没有编写网络内核扩展的情况下,在OS X中可能不可能(即使那样,这也很具有挑战性(。
到网络请求到达另一个过程时,它已经通过了网络堆栈,并且已经失去了有关该连接的过程的任何概念(除非最近有所改善(。
实际上,您可以获得的最接近的是与Local主机接口上的随机端口结合,然后将应用程序放入背景后立即将其拆除。
脚步化,如果您设法以某种方式说服了苹果公司计划构建VPN,那么从理论上讲,可以滥用VPN API,以使您提供仅在应用程序中工作的私人网络。但是,它永远不允许在App Store中。
但是为什么您想这样做?Avplayer不仅可以从文件URL播放。
有很多方法可以做到这一点:您可以检查gcdwebserver中的传入请求,并决定是否要响应或返回错误。
您可以添加秘密标题其他应用程序不知道,用秘密键签名整个请求等...