【问题标题】:Is it safe to add localhost to App Transport Security (ATS) NSExceptionDomains?将 localhost 添加到 App Transport Security (ATS) NSExceptionDomains 是否安全?
【发布时间】:2016-11-24 20:32:49
【问题描述】:

在安全性方面,将localhost 添加到 ATS NSExceptionDomains 以供开发使用是否安全?在每次提交之前从Info.plist 文件中删除这些行不是很方便(而且很容易忘记)。

<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

另外,苹果能否因此拒绝申请?

【问题讨论】:

    标签: ios iphone https app-transport-security


    【解决方案1】:

    您现在可以对本地地址执行此操作:

    <key>NSAppTransportSecurity</key>    
    <dict>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>
    

    Apple 将此密钥视为 ATS 例外 - 它已表示不会拒绝应用程序使用它。更多信息在这里:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html(在页面中搜索“本地”)

    【讨论】:

    • 这就是我想要的!从 iOS10 开始可用,谢谢!
    • 对我不起作用 :( 我可能不知道在哪里写。
    • @PareshThakor 可能是这样的:NSAppTransportSecurityNSAllowsLocalNetworking
    • Apple has blessed... :)
    【解决方案2】:

    如果应用程序的生产版本不需要它,我会将您的构建配置设置为使用两个不同的 Info.plist 文件。您基本上可以将 plist 的内部版本设置为“Internal-Info.plist”,并在其中包含 localhost 排除项。然后拥有没有该排除项的生产“Info.plist”,让 Apple 没有理由现在或将来拒绝您的应用程序。

    要配置您的构建以自动为构建类型提取正确的 Info.plist:

    1. 从左侧导航器中选择您的项目
    2. 选择您要更改的目标(在“TARGETS”下)
    3. 点击“构建设置”
    4. 搜索“Info.plist”
    5. 在“打包”部分,您应该会看到一个名为“Info.plist 文件”的设置。选择行,然后单击小三角形将其展开,以便您可以为不同的构建配置设置不同的设置。将“Debug”的值更改为“Internal-Info.plist”

    确保将“Info.plist”复制到一个名为“Internal-Info.plist”的新文件中,从“Info.plist”中删除排除项,这样就可以了。

    Apple 现在可能会因此拒绝您(只有 Apple 知道),但从 2017 年开始,Apple 将要求任何 ATS 排除的正当理由,因此除非您有排除 localhost ATS 要求的正当理由,否则最好现在就正确设置它。

    【讨论】:

    • 这会让我维护两个 plist... 很容易忘记添加一些东西。
    • 您可以将脚本添加到您的构建设置中,该脚本可以删除仅适用于发布构建的 localhost 异常。我们很少更改 Info.plist,因此维护两个副本非常少。但是,通过一些脚本,您可以让它成为自动构建过程的一部分,并且仍然能够维护单个 Info.plist。
    • 另外,每次提交到应用商店时,您是否或多或少会忘记从 plist 中删除条目?
    猜你喜欢
    • 2018-01-27
    • 2015-12-20
    • 2017-09-30
    • 2016-10-13
    • 2015-12-18
    • 1970-01-01
    • 2019-03-07
    • 2016-02-24
    • 2017-03-11
    相关资源
    最近更新 更多