2016-12-30 51 views
1

我有一個使用Swift 3.0編寫的可可應用程序,該應用程序使用C++/Boost編寫的在套接字上接收UDP數據的框架。但是,當應用程序沙箱功能在可可應用程序中打開時,我沒有從套接字接收任何數據,我也用它先將數據發送到服務器。當應用程序沙箱關閉時,所有內容都按預期工作。 權利com.apple.security.network.client和om.apple.security.network.server設置爲YES。當在Cocoa應用程序中啓用App Sandbox時,未在套接字上接收任何UDP數據

有什麼我可以做的,使其與應用程序沙箱開啓(這是Mac應用程序商店中的應用程序的強制性)的工作?

回答

1

它可以使用下面的權利,允許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

我的答案*不說*不能從套接字接收,但是,與協議沒有關聯的顯然不是。 –

1

我能使其既com.apple.security.network.client和com.apple.security.network.server工作啓動,我使用更高然後1024個端口。我們實際上遇到了防火牆和另一端後端的問題。總而言之,可以在cocoa沙盒應用程序中打開套接字並接收UDP數據,但需要啓用com.apple.security.network.server。

相關問題