当在Cocoa应用程序中启用App Sandbox时,未在套接字上接收任何UDP数据

问题描述:

我有一个使用Swift 3.0编写的可可应用程序,该应用程序使用C++/Boost编写的在套接字上接收UDP数据的框架。但是,当应用程序沙箱功能在可可应用程序中打开时,我没有从套接字接收任何数据,我也用它先将数据发送到服务器。当应用程序沙箱关闭时,所有内容都按预期工作。 权利com.apple.security.network.client和om.apple.security.network.server设置为YES。当在Cocoa应用程序中启用App Sandbox时,未在套接字上接收任何UDP数据

有什么我可以做的,使其与应用程序沙箱开启(这是Mac应用程序商店中的应用程序的强制性)的工作?

它可以使用下面的权利,允许UDP/TCP套接字连接:

com.apple.security.network.client 
com.apple.security.network.server 

根据文档中苹果的“Elevating Privileges Safely”部分,低于1024(UDP/TCP打开原始套接字或端口号)需要提升特权。在沙盒应用程序中显然不允许提升权限。

情况,需要提升的特权

无论用户是否登录作为管理员, 程序可能在 为了完成任务获得行政或root权限。需要提升 特权任务的例子包括:

* manipulating file permissions, ownership 
* creating, reading, updating, or deleting system and user files 
* opening privileged ports (those with port numbers less than 1024) for TCP and UDP connections 
* opening raw sockets 
* managing processes 
* reading the contents of virtual memory 
* changing system settings 
* loading kernel extensions 

如果你必须执行需要提升权限的任务时,你必须知道的事实,以提升的权限运行意味着,如果有任何安全您的程序中存在漏洞,攻击者也可以获得更高的权限,然后就可以执行上面列出的任何操作。

注:升降特权未提交 Mac App Store的应用程序允许(而无法在iOS版)。

+0

感谢您的回答,很高兴知道这一点。但实际上,我们使它启用了服务器com.apple.security.network.server,并且存在防火墙和其他最终服务器的问题。所以实际上它可以从沙箱套接字接收数据,我们使用的端口更高。我会回答我的问题关闭这个问题 –

+0

我的答案*不说*不能从套接字接收,但是,与协议没有关联的显然不是。 –

我能使其既com.apple.security.network.client和com.apple.security.network.server工作启动,我使用更高然后1024个端口。我们实际上遇到了防火墙和另一端后端的问题。总而言之,可以在cocoa沙盒应用程序中打开套接字并接收UDP数据,但需要启用com.apple.security.network.server。