将本地主机添加到应用传输安全性(ATS)NSExceptionDomains是否安全?

就安全性而言,是否安全地将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> 

另外,苹果能否因此拒绝这个应用程序?

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

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

苹果已经把这个关键作为一个ATS例外祝福 – 它已经表示,它不会拒绝使用它的应用程序。 更多信息在这里: https : //developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html (在页面中search“本地”)

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

要将你的版本configuration为自动为合适的版本提取Info.plist:

  1. 从导航器中select您的项目到左侧
  2. select你想改变的目标(在“TARGETS”下)
  3. 点击“Build Settings”
  4. search“Info.plist”
  5. 在Packaging部分,您应该看到一个名为“Info.plist文件”的设置。 select该行,然后单击该小三angular形将其展开,以便对不同的构buildconfiguration可以有不同的设置。 将“Release”的值更改为“Internal-Info.plist”

确保将“Info.plist”复制到一个名为“Internal-Info.plist”的新文件中,将“Info.plist”中的排除从“Info.plist”中移除,并且应该很好。

现在苹果可能会拒绝你(只有苹果知道),但从2017年开始,苹果将要求有任何ATS排除的正当理由,所以除非你有排除本地主机ATS要求的有效理由,最好只设置它现在正确的。