NSExceptionAllowsInsecureHTTPLoads和NSThirdPartyExceptionAllowsInsecureHTTPLoads有什么区别?(涉及IT技术)

7
在iOS 9中,我可以向我的info.plist文件添加键来禁用应用传输安全(App Transport Security)。这里有两个键,NSExceptionAllowsInsecureHTTPLoadsNSThirdPartyExceptionAllowsInsecureHTTPLoads,它们被定义为:

一个可选的布尔值,当设置为YES时,允许不安全的HTTP连接。使用此键来描述您的应用程序对具有受控安全属性的域的网络行为意图。

以及

NSExceptionAllowsInsecureHTTPLoads键的一个版本,用于配置到一个您无法控制其安全属性的域的连接。

它们所指的安全属性是什么?为什么我的意图很重要?
在哪些情况下,我会使用其中一个而不是另一个?
3个回答

1

8
如果你在回答中发布链接,应该将链接内容的相关部分复制到回答正文中。这样即使链接失效,回答也能保持相关性。 - Rose Kunkel

1

根据2016-09-13的最新规定,苹果已经废弃了第三方密钥

从NSAppTransportSecurity密钥的描述中删除了以下第三方服务器例外密钥的所有提及;苹果不再要求应用程序指定它们中的任何一个:NSThirdPartyExceptionAllowsInsecureHTTPLoads,NSThirdPartyExceptionRequiresForwardSecrecy,NSThirdPartyExceptionMinimumTLSVersion。

简而言之,使用NSExceptionAllowsInsecureHTTPLoads


1
这两个键在功能上是相同的,但有一个语义上的区别。我引用了这篇关于App Transport Security的文章
引用如下: 这两个键的区别在很大程度上是语义上的,有助于澄清被豁免于ATS默认行为的域名的意图和所有权。也就是说,从技术角度来看,这两个键实现的结果是相同的。它们都允许与该域名建立不安全的HTTP连接。
总之,如果你控制服务器/域名,请使用NSExceptionAllowsInsecureHTTPLoads;如果你不控制服务器/域名,请使用NSThirdPartyExceptionAllowsInsecureHTTPLoads。
我很欣赏苹果对这两者进行区分。这对于项目中的开发人员来说是清晰的,而且同样重要的是,苹果也清楚为什么要将该域名豁免于App Transport Security。请记住,苹果在应用审核过程中可能会问你为什么添加了豁免域名。通过明确表明意图(你控制域名还是第三方域名),苹果可以获得更多的上下文信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接