将localhost添加到App Transport Security(ATS)NSExceptionDomains是否安全?

时间:2016-07-21 09:59:06

标签: ios iphone https app-transport-security

在安全方面,将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>

此外,Apple可以拒绝该应用程序吗?

2 个答案:

答案 0 :(得分:59)

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

<key>NSAppTransportSecurity</key>    
<dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>
Apple已将此密钥保存为ATS例外 - 它已表示不会拒绝使用它的应用程序。更多信息:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html(在本地搜索“本地”)

答案 1 :(得分: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”
  6. 确保将“Info.plist”复制到名为“Internal-Info.plist”的新文件中,从“Info.plist”中删除排除项,您应该很好。

    Apple现在可以拒绝你了(只有Apple才知道),但从2017年开始,Apple将要求有任何ATS排除的正当理由,所以除非你有合理的理由排除localhost ATS要求,否则最好是现在正确设置它。