我正在尝试安装特权助手工具来执行一些高级工作。我正在使用SMJobBless。
我能够很好地安装该工具,并能够与它进行通信。我正在使用Mac OS X 10.8.4并使用NSXPCConnection。
我在plist中添加了.mach
服务,该服务将安装在/Library/LaunchDaemons
中。我在应用程序中使用[initWithMachServiceName:options:]
,因为帮助程序是特权工具,帮助程序中的[– initWithMachServiceName:]
可以监听。沟通工作正常。
但问题是我尝试了与我创建的另一个没有任何编码的应用程序相同的通信(之前的帮助工具安装程序已经过编码)。我试图连接到辅助工具的mach服务,并且能够轻松连接。这是一个问题,因为任何人都可以与之沟通并使其做任何事情。
我想要一些方法在我的应用程序和帮助工具之间进行安全通信。
非常感谢。
答案 0 :(得分:1)
正如您所说的那样,您没有签署第二个应用程序,我认为这是允许第二个应用程序调用帮助应用程序的问题。从Apple文档,特别是SMJobBless中的自述文件,它指出: -
服务管理框架使用代码签名来确保辅助工具是预期由主应用程序运行的工具
This document应该能够帮助您正确地将帮助应用与其所有者相关联。
请注意,它引用了一个python脚本,提供了here。
答案 1 :(得分:0)
回答我自己的问题:我已经记录了同样的雷达错误,Apple说这个行为是有意的:
“没有公开不安全的操作,这取决于特权助手”