iOS 9:Application Transport Security plist配置

时间:2015-06-30 17:11:29

标签: ios security plist nsurl ios9

我目前正在开发一个同时使用HTTPS端点和HTTP端点的应用程序。现在我想通过在plist中创建一个NSExceptionDomains字典来符合iOS9的应用程序传输安全性,但是我的应用程序命中的第三方端点的数量是动态的并且总是在增长,所以这样做将是一项相当繁琐的任务。

因此,虽然我可以将NSAllowsArbitraryLoads设置为YES,但我宁愿默认关闭ATS,除了少数几个安全的HTTPS端点。是否有可能做到这一点?我看到一篇关于某人以这种方式配置plist的博文。

enter image description here

但我找不到任何确认这是有效解决方案的信息,也不知道如何知道HTTPS请求是否正在使用ATS。有谁知道这是否可行或如何知道这是否有效?

修改

值得一提的是,当前应用文档中的标签不正确。

NSExceptionAllowInsecureHTTPLoads NSExceptionRequiresForwardSecrecy NSExceptionMinimumTLSVersion NSThirdPartyExceptionAllowsInsecureHTTPLoads NSThirdPartyExceptionMinimumTLSVersion NSThirdPartyExceptionRequiresForwardSecrecy

实际上是

NSTemporaryExceptionAllowsInsecureHTTPLoads NSTemporaryExceptionRequiresForwardSecrecy NSTemporaryExceptionMinimumTLSVersion NSTemporaryThirdPartyExceptionAllowsInsecureHTTPLoads NSTemporaryThirdPartyExceptionMinimumTLSVersion NSTemporaryThirdPartyExceptionRequiresForwardSecrecy

1 个答案:

答案 0 :(得分:4)

在做了一些研究之后,我能够回答我自己的问题。所以基本上你说通过设置NSAllowsArbitraryLoads = YES,一切都需要默认为不使用ATS。

但是在您的例外字典(NSExceptionDomain)中,您指定了要采取不同行为的端点。这意味着您可以将HTTPS端点放在此列表中,并通过将NSTemporaryExceptionAllowsInsecureHTTPSLoads设置为NO来指定它以使用ATS。我能够通过放置一个不安全的端点itunes.apple.com并尝试访问它来验证这一点。当我将NSTemporaryExceptionAllowsInsecureHTTPSLoads设置为NO时,它失败并抱怨它不安全。

这对大多数人来说可能是显而易见的,但是那里的文档很少,我希望这会有所帮助。