当前位置:首页 > 科技数码 > 正文

iOS 开发之ATS安全的配置

摘要: iOS开发之ATS安全的配置最佳答案53678位专家为你答疑解惑iOS开发之ATS安全的配置2016年11月至12月提交的应用到...

iOS 开发之ATS安全的配置

最佳答案 53678位专家为你答疑解惑

iOS 开发之ATS安全的配置

2016年11月至12月提交的应用到appstore的小伙伴都知道,所有的HTTP请求都必须为HTTPS,尽管后来又说会delay半年实施,但是保险起见,小编我还是已经换成了https,并且做了相应的安全配置;

一.ATS描述

iOS9中新增App Transport Security(ATS)特性,主要使原来请求的时候用到的HTTP都转向TLS1.2协议进行传输。默认情况下非HTTPS的网络访问是被禁止的。通过NSAllowsArbitraryLoads?设置为YES?来禁用ATS。

WWDC16中,Apple表示继续收紧对HTTP的访问限制。2017年1月1日起,所有的新提交app默认是不允许使用NSAllowArbitraryLoads来绕过ATS限制的,换句话说,我们最好保证app的所有网络请求都是HTTPS加密的,否则可能会在应用审核时遇到麻烦。

二、强调iOS Security,改成https请求的原因

1>现在手机已经成为大家接入互联网的主要设备;

2>移动场景下的数据安全问题更加复杂,Wi-Fi定向攻击随时随地都有可能发生;

3>Wi-Fi、短信、电话、密码、手机卡这些已经越发的公开和透明化;

4>伴随着互联网金融的爆发,P2P理财、余额宝、银行客户端等越来越不安全;

三、苹果公司针对这些隐患所做的安全措施

1>手机硬件芯片级的安全(苹果把安全做到芯片上);一方面,public key由苹果公司提供,且不可伪造;另一方面,设备的每次软件升级都需要苹果的认证;

2>Data protection

password:password作为种子,加上硬件信息共同生成的加密密钥;

sandbox:沙河将数据隔离,所有用户的权限获得,都需要用户同意;

code signing:代码都是需要签名的,整个系统以及所有应用,都在code siging的检查下运行的;

touch ID:指纹采集器sensor由独立的通道传递信息到secwe endave

3>用户软件升级上的安全(iOS10.x,iOS9.x,iOS8.x)

4>开发者层面上的安全:(1)Touch ID 可被开发者使用;(2)App-Transport Security (3)使用TLS1.2以上的安全协议;(4)HTTP+Security,变为安全传输通道;

四、iOS10 NSAppTransportSecurity

1>Server端 :购买SSL证书,配置Nginx;

2>iOS客户端的配置如下:

对NSAppTransportSecurity的支持自iOS9.0,OS X v10.11开始,适用于App和App extension。

对于使用iOS9.0,OS X v10.11SDK及以上的App来说,ATS默认开启。在启用ATS的情况下,所有的HTTP请求必须为HTTPS(RFC2808)链接。任何不安全的HTTP请求都将失败。ATS使用TLSv1.2(RFC5246)以上,才可通讯。

在项目的info.plist中配置这个键,开发者可以自定义网络安全策略。自iOS10,macOS 10.12开始,新增了下列子健的支持:

NSAllowsArbitraryLoadsInMedia

NSAllowsArbitraryLoadsInWebContent

NSRequiresCertificateTransparency

NSAllowsLocalNetworking

ATS的总体结构,都是非必填

NSAppTransportSecurity : Dictionary {

NSAllowsArbitraryLoads : Boolean

NSAllowsArbitraryLoadsInMedia : Boolean

NSAllowsArbitraryLoadsInWebContent : Boolean

NSAllowsLocalNetworking : Boolean

NSExceptionDomains : Dictionary {

: Dictionary {

NSIncludesSubdomains : Boolean

NSExceptionAllowsInsecureHTTPLoads : Boolean

NSExceptionMinimumTLSVersion : String

NSExceptionRequiresForwardSecrecy : Boolean?? // Default value is YES

NSRequiresCertificateTransparency : Boolean

}

}

}

以上主键用来定义app的总体ATS策略;

子健?NSExceptionDomains下面的键,使用这些键针对某个域名单独配置。

主键:NSAllowsArbitraryLoads?设置为YES,禁用ATS限制注意:设置为YES会引发App Stroe的审查,开发者必须说明原因。不能说服审核人员,将被拒。

主键:NSAllowsArbitraryLoadsInMedia?设置为YES,解除通过AVFoundation框架访问媒体内容时的ATS限制;启用这个键,务必确保载入的媒体内容已经被加密,例如受FairPlay保护的文件,或者是安全的HLS流媒,其中不包含敏感的个人信息。

主键:NSAllowsArbitraryLoadsInWebContent?设置为YES?解除通过webview发出的网络请求的ATS限制。启用这个键,可以使app访问任意的网页内容,但不影响app的总体ATS策略。

主键:NSAllowsLocalNetworking?设置为YES?使得app可以载入任意本地资源,但不影响app的总体ATS策略。

主键:NSExceptionDomains 为一个或多个域名单独配置ATS。

被单独配置的域名,默认受到完全的ATS限制,不管NSAllowsArbitraryLoads的值如何:需要通过子健,进一步配置,所有子健都属于NSExceptionDomains。

子键1:NSIncludesSubdomains?设置为YES,当前域名的ATS策略使用于所有子域名。默认NO。

子键2:NSExceptionAllowsInsecureHTTPLoads?设置为YES,可以同时通过HTTP和HTTPS访问当前域名。默认NO。注意配置这个键值将引发AppStore的审查,开发者必须说明原因。

子键3:NSExceptionMinimumTLSVersion?指定TLS的最低版本,可以使用版本较低的,有安全漏洞的TLS协议。注意,配置这个键值,将引发AppStore的审查,开发者必须说明原因。

子键4:NSExceptionRequiresForwardSecrecy设置为NO,允许对当前域名使用不支持正向保密的TLS加密算法。默认YES。

子键5:NSRequiresCertificateTransparency设置为YES,将验证域名服务器证书的Certificate Transparency时间戳。默认NO。

iOS App 中的应用传输安全(ATS)

照片由Markus Spiske在Unsplash上拍摄

iOS 9 版本已宣布 App Transport Security 或简称 ATS。

App Transport Security 是一种在网络层工作的功能,用于保护客户端和服务器通信之间的数据传输。

ATS 要求使用 URL 加载系统(通常使用 URLSession 类)建立的所有 HTTP 连接都使用 HTTPS。

它进一步强加了扩展的安全检查,以补充传输层安全 (TLS) 协议规定的默认服务器信任评估。

ATS 会阻止不符合最低安全规范的连接。有关其他详细信息,请参阅防止不安全的网络连接。- 苹果

如果连接不符合安全规范,ATS 会使用配置的设置阻止它们。尽管强烈建议启用 ATS,但您可以为特定域禁用它。

让我们看一下应用程序传输安全设置键。

通过将以下代码段添加到目标的信息中。list表示 应用不允许不符合应用传输安全 (ATS) 定义的严格规则的网络请求。

此外,您可以很容易地禁用 App Transport Security,如下所示。

不要忘记苹果不建议启用它。

但是,如果禁用,您可以排除在应用程序传输安全设置中定义的某些域或子域。

添加排除其子域的异常域非常容易。正如您在上面的代码片段中看到的,我们启用了应用程序传输安全性,其中一个例外域的域名是 example.com。

NSIncludesSubdomains 键指定子域。

NSExceptionAllowsInsecureHTTPLoads 键允许在主域下请求的 HTTP 请求。

您可以在此处详细了解应用程序传输安全设置:https ://developer.apple.com/documentation/bundleresources/information_property_list/nsapptransportsecurity

移动应用程序的使用率正在提高。此外,安全问题是重要的细节。每个开发人员在开发金融应用程序或传输敏感数据时都会遇到安全问题。在那一行,我们必须遵守 Apple 推荐的所有规则。

下一步,我将通过 App Transport Security Settings 解释 SSL Pinning 主题。

让我们在Twitter 上联系。

发表评论