-
背景
- WWDC15 提出的ATS(App Transport Security)是Apple 在推进网络通讯安全的一个重要方式。在iOS 9 和 OS X 10.11中,默认情况下非HTTPS的网络访问是被禁止的。作为缓冲,我们可以在info.plist中通过以下方式来禁用ATS。
- WWDC16中, Apple表示将继续收紧对普通HTTP的访问限制。从2017年1月1日起,所有的新提交app默认是不允许使用
Allow Arbitrary Loads
来绕过ATS限制的。
现有对策
1.继续沿用iOS9中使用的方法,只不过提交审核的时候,需要进行相应的原因说明,但是如果理由不充分的话Apple有很大可能拒绝通过你的app;
2.选择使用域名白名单(NSExceptionDomains), 通过设定该域名下的NSExceptionAllowsInsecureHTTPLoads
来开放HTTP。如果只是针对特定的第三方服务器的话,可以选择使用诸如第三方服务器没有进行HTTPS配置的说辞来规避审核,但是如果访问的是自己的服务器,那还是需要全部HTTP内容开放,可能这个理由会无法通过;
3.对于网页浏览和视频播放,iOS10 中新加入了NSAllowsArbitraryLoadsInWebContent
和NSAllowsArbitraryLoadsForMedia
键。通过将它们设置为YES
, 可以让你的app中的UIWebView
、WKWebView
或者使用AVFoundation
播放的在线视频不受ATS的限制。不过还是需要在审核的时候进行相关说明。但是这个键在iOS9 中不会起作用。备注
1.如果你需要使用内网,可以设置NSAllowsLocalNetworking
,而不必担心SSL连接的问题。
2.有效的NSAppTransportSecurity
字典结构
NSAppTransportSecurity : Dictionary {
NSAllowsArbitraryLoads : Boolean
NSAllowsArbitraryLoadsForMedia : Boolean
NSAllowsArbitraryLoadsInWebContent : Boolean
NSAllowsLocalNetworking : Boolean
NSExceptionDomains : Dictionary {
<domain-name-string> : Dictionary {
NSIncludesSubdomains : Boolean
NSExceptionAllowsInsecureHTTPLoads : Boolean
NSExceptionMinimumTLSVersion : String
NSExceptionRequiresForwardSecrecy : Boolean // Default value is YES
NSRequiresCertificateTransparency : Boolean
}
}
}
关于iOS强制使用HTTPS的问题及现有对策
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 摘要 为解决在iOS9下基于ATS对HTTP的请求的说明及适配进行说明 2016.7.1根据苹果官方文档的修改做出...
- 说明:文章中部分内容参考了网络资源,如cocoaChina中的文章。 App Transport Security...