ATS简介
ATS的全称是App Transport Security,是从iOS9开始引入的安全项,目的是推广使用https,禁用http,这一安全项在iOS10得到进一步加强。
iOS9中ATS配置
iOS9中默认强制使用https,但是如果Info.plist文件中加入以下节点,就可以关闭这个安全项,允许app使用http。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<dict>
iOS10中ATS配置
iOS10中,苹果更加坚定地推行了ATS安全项,不允许开发者全局关闭ATS安全项,但是可以添加不受ATS限制的域名。下面配置项就是允许qq.com域名使用http,这样的配置比iOS9一刀切的方法更安全一些。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>qq.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<false/>
</dict>
</dict>
</dict>
以小米运动的ipa包看一下iOS10中的ATS配置项,查看Info.plist文件,可以看到NSAppTransportSecurity和NSExceptionDomains,NSExceptionDomains下的域名就是允许使用http的域名。
ATS安全评估
将ipa包上传至MobSF扫描框架,会进行ATS安全项检查。凡是有允许http使用的配置都会有风险提示,安全人员在评估风险时,要注意如果是自己的域名被允许使用http,那么风险是可控的,如果像iOS9中关闭了ATS,那么app在访问一些http链接时存在泄漏敏感数据的风险。
因此安全人员在进行评估过程中,需要提示风险的情况有:
- iOS9中将NSAllowsArbitraryLoads设置为true。
- iOS10中将未知的域名排除在ATS的限制之外。