[转]iOS9 new_001:iOS9网络适配(ATS)
下载Xcode7打开APP后大家都发现自己的APP无法联网了,why?
苹果官方文档介绍如下:
App Transport Security
App Transport Security (ATS) enforces best practices in the secure connections between an app and its back end. ATS prevents accidental disclosure, provides secure default behavior, and is easy to adopt; it is also on by default in iOS 9 and OS X v10.11. You should adopt ATS as soon as possible, regardless of whether you’re creating a new app or updating an existing one.
If you’re developing a new app, you should use HTTPS exclusively. If you have an existing app, you should use HTTPS as much as you can right now, and create a plan for migrating the rest of your app as soon as possible. In addition, your communication through higher-level APIs needs to be encrypted using TLS version 1.2 with forward secrecy. If you try to make a connection that doesn‘t follow this requirement, an error is thrown. If your app needs to make a request to an insecuredomain, you have to specify this domain in your app‘s Info.plist
file
即,从iOS9开始,所有的http请求都改成了https,采用TLS 1.2协议,目的是增强数据安全。如果不更新的话,暂时可以在Info.plist中声明,使用不安全的网络请求。
先介绍一下设置方法:
最简单的方法在Info.plist中添加以下字段(ATL disabled):
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
也即:
下面详细讨论下ATS:
什么是TLS?
TLS(传输层安全协议)是在SSL 3.0基础上发展起来的,应用最广泛的是TLS 1.0,接下来是SSL 3.0,但主流浏览器都已经实现了TLS 1.2的支持。TLS 1.0通常被标示为SSL 3.1,TLS 1.1为SSL3.2,TLS 1.2为SSL 3.3。
TLS/SSL的作用是对传输的信息加密并签名,保证第三方无法获得被解密的信息和伪造其中一方向对方发送信息。
其基本思路是采用公钥加密法,即客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
具体的实现细节和运行过程在此不做赘述。
TLS和https有什么关系?
https说白了就是http协议和SSL/TLS协议的组合,可以大致理解为“HTTP over SSL”或“HTTP over TLS”。
不使用SSL/TLS的HTTP通信,所有信息明文传播,带来了三大风险:
1、qie ting风险:第三方可以获知通信内容;
2、篡改风险:第三方可以修改通信内容;
3、冒充风险:第三方可以冒充他人身份参与通信。
SSL/TLS协议是为了解决这三大风险而设计的,希望达到:
1、所有信息都是加密传播,第三方无法qie ting;
2、具有校验机制,一旦被篡改,通信双方会立刻发现;
3、配备身份证书,防止身份被冒充。
众所周知,iOS9加强了关于用户隐私和数据安全的保护,故强制升级为https,并将其称为App Transport Security(ATS)。虽然任性,但也是符合苹果作风的合理决定。
我们要做些什么?(适配解决方案)
简单来说,两种选择:
选择一(也是根本选择):服务端升级为TLS 1.2,解析数据。
选择二(解决燃眉之急):在Info.plist中进行适配。
下面详细介绍一下选择二的配置。
最简单的适配方法是在Info.plist配置中改为下面的XML源码:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
也即:
事实上,除了NSAllowsArbitraryLoads外,还有很多其他的key,如下:
其含义分别为:
NSAppTransportSecurity
ATS的top level key.
NSAllowsArbitraryLoads
设置是否对任意请求关闭ATS,默认为NO(开启)。
NSExceptionDomains
放置需要关闭ATS的domains的字典。
<domain-name-for-exception-as-string>
设置需要关闭ATS的domains。其中key为域名。
NSExceptionMinimumTLSVersion
设置支持的最低TLS版本,默认为TLS 1.2.
NSExceptionRequiresForwardSecrecy
设置使用的密码方式。
NSExceptionAllowsInsecureHTTPLoads
设置是否允许http请求,默认为NO。
NSRequiresCertificateTransparency
设置是否需要SSL证书。
NSIncludesSubdomains
设置是否允许subdomains
NSThirdPartyExceptionMinimumTLSVersion
NSThirdPartyExceptionRequiresForwardSecrecy
NSThirdPartyExceptionAllowsInsecureHTTPLoads
设置第三方的ATS。
具体每个key的作用,可参见:
其他具体配置方法,可参见:
http://www.neglectedpotential.com/2015/06/working-with-apples-application-transport-security/
介于每次iOS系统升级的用户量都较大,可以预见当iOS9正式版推出后,将会有大批用户迁移,因而做https适配对于更加的用户体验及数据安全都十分重要。
参考:
3、http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
4、http://www.neglectedpotential.com/2015/06/working-with-apples-application-transport-security/
相关推荐
本资源集合主要关注的是针对iOS9的功能适配,帮助开发者解决在iOS9环境下遇到的问题,提高应用的兼容性和用户体验。 一、UI适配 1. `San Francisco` 字体:iOS9引入了新的系统字体San Francisco,替换掉了之前的...
因此,开发者需要确保代码在iOS9及更高版本上的表现一致,遵循Apple的版本适配最佳实践,比如使用条件编译指令来处理不同版本间的API差异。 总的来说,这个项目涵盖了iOS多媒体开发的多个重要方面,包括...
其次,iOS9加强了App Transport Security (ATS) 的实施,这是一项提高网络连接安全性的措施。默认情况下,ATS要求所有HTTP连接使用HTTPS协议,以保护用户数据。如果你的应用依赖于非HTTPS连接,你需要配置Info.plist...
本篇文章将深入探讨“iOS9适配指南”,包括可能遇到的问题、解决策略以及如何优化你的应用以兼容iOS9。 首先,我们来看看iOS9的主要更新内容。苹果在iOS9中引入了Siri的强化、改进的多任务处理、更强大的隐私控制和...
10. **App Transport Security (ATS)**:iOS9加强了网络通信的安全性,强制应用使用HTTPS协议进行数据传输。开发者需要配置ATS以确保与服务器的通信符合新的安全标准。 以上只是《iOS9 By Tutorials》中部分核心...
【iOS 9 by Tutorials Code3.zip】是一个包含与iOS 9开发相关的代码示例和教程的压缩包,其中的资源可能涵盖了多个方面,旨在帮助开发者深入理解和掌握iOS 9平台上的应用程序开发技术。日期"05-15"可能表示这些教程...
源代码会展示如何适配ATS,确保应用在新系统下的网络通信安全。 总的来说,《iOS 9开发指南》的源程序涵盖了从基础到高级的各个方面,包括Swift语言、用户界面设计、系统服务集成、性能优化等多个主题。通过深入...
- **App Transport Security (ATS)**:强制安全的网络连接,理解和配置ATS以满足需求。 - **错误处理**:使用do-catch语句处理运行时错误。 - **Unit Testing和UI Testing**:编写测试用例,确保代码质量和稳定性...
最后,iOS SDK的安全特性不容忽视,例如App Transport Security(ATS)确保了网络通信的数据安全,Keychain服务用于安全地存储敏感信息,而Touch ID和Face ID的API则允许开发者添加生物识别认证。 总之,iOS SDK...
"ios-ios 11 适配.zip" 文件包含了一个名为 "IOS11AdapterDemo" 的示例项目,这显然是为了帮助开发者了解如何在Xcode 9中为iOS 11进行应用适配。以下是关于iOS 11适配的一些关键知识点: 1. **UI设计更新**:iOS 11...
在 iOS 9 中,Apple 引入了一些新的安全特性,比如 App Transport Security (ATS),它强制要求所有网络请求使用 HTTPS 协议,以提高应用的数据安全性。这对于未正确配置的 HTTP 请求会导致连接失败,从而可能引发...
在开发时,可能需要适配ATS以确保应用能正确连接到非HTTPS服务器。 7. **Swift和Objective-C**:Xcode支持这两种编程语言。Swift是苹果于2014年推出的新语言,语法简洁,安全性高;Objective-C则是苹果的旧有语言,...
9. **SwiftUI**: SwiftUI是苹果在WWDC 2019上推出的全新界面构建框架,用于快速构建iOS、macOS、watchOS和tvOS的用户界面。在iOS 13.1中,开发者可以利用SwiftUI创建响应式、声明式的UI设计。 10. **App Store ...
ATS 是 iOS 9 引入的一项安全特性,强制所有 HTTPS 连接遵循安全配置。 总之,这个 "OpenSSL-for-iOS" 压缩包提供了一个预先配置好的 OpenSSL 库,可以帮助 iOS 开发者快速集成 SSL/TLS 功能,而无需从头编译。配合...
课程会指导你如何适配这些新特性,确保你的应用能在iOS9及更高版本上正常运行。 此外,课程还将涵盖UI设计和用户交互,包括Storyboard、Auto Layout和Size Classes,让你能够为不同屏幕尺寸的设备设计适应性良好的...
- **适配不同版本的iOS**:不同的iOS版本可能需要不同的处理方式,比如iOS 9之后引入了App Transport Security (ATS),需要处理HTTPS连接。 - **遵循隐私政策**:确保在获取用户数据和分享内容时符合相关法律法规,...
此外,iOS 11.0在隐私和安全方面也有所加强,例如限制后台应用访问位置数据,以及引入App Transport Security (ATS)的默认严格设置。这意味着开发者需要确保他们的应用遵循这些新的安全策略,调试支持文件会提供必要...
在iOS开发过程中,尤其是针对iOS6的开发,开发者需要注意一些特定的事项以确保应用的兼容性和用户体验。以下是一些关键的开发注意事项: 1. **屏幕大小适配**: 在iOS6中,设备屏幕大小的变化需要特别关注。不要...
7. **App Transport Security (ATS)**:从iOS 9开始,Apple引入了ATS,以增强应用的安全性,要求所有网络通信都必须使用HTTPS。如果遇到因ATS导致的网络请求失败,可以在Info.plist中配置ATS的例外规则。 8. **...
iOS10 ATS 配置的一点思考 ATS 无法对 IP 地址进行限制 假设要调用的 api 为 /foo/bar/doSth 如果服务器地址为api.myserver.com,那么http://api.myserver.com/foo/bar/doSth会被 ATS 拦截,因为它是不安全的 ...