代码之家  ›  专栏  ›  技术社区  ›  andyvn22

为什么沙盒不能阻止我的应用访问任意的url?

  •  0
  • andyvn22  · 技术社区  · 6 年前

    我的理解是沙盒应用不允许访问用户未选择的任意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 回复  |  直到 6 年前
        1
  •  2
  •   pfandrade    6 年前

    使用nsworkspace实际上并没有打开文件。你的应用无法访问该文件的内容。

    您只是指示系统使用处理该文件的默认应用程序打开该文件。对于沙盒应用程序来说,这是完全合法的。

    例如,尝试使用nsfilehandle打开,应该会看到一个错误。