Почему песочница не останавливает мое приложение от доступа к произвольным URL? - PullRequest
0 голосов
/ 03 июля 2018

Насколько я понимаю, изолированное приложение не имеет доступа к произвольным URL-адресам, не выбранным пользователем. Почему же мое простое тестовое приложение способно:

NSWorkspace.shared.open(URL(fileURLWithPath: "/Library/Application Support/App Store/adoption.plist"))

Сборки Debug и Release обе работают, без консольных сообщений. Мой файл прав выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
</dict>
</plist>

Должно быть, я что-то неправильно понимаю. Приложения разработчика не проверены на Mac разработки? Если так, как я могу проверить, что мое приложение не содержит нарушений?

1 Ответ

0 голосов
/ 05 июля 2018

Используя NSWorkspace, вы фактически не открываете файл. Ваше приложение не имеет доступа к содержимому этого файла.

Вы просто указываете системе открыть этот файл любым приложением по умолчанию, которое его обрабатывает. Это совершенно законно для приложений с песочницей.

Попробуйте открыть, например, используя NSFileHandle, и вы должны увидеть ошибку.

...