作者:沙铭

来源:公众号 沙铭世界观

ID:mobview

做推广的也许并不了解什么是ATS(App Transport Security),不过这却是一个定时炸弹,引爆点在2016年底,后果就是你不注意,可能就会导致产品无法在App Store上架,虽然没有违规操作下架那么严重,但结果同样致命。现在还有2个月的缓冲期,但还有很多开发者没有想到这一点,有必要给大家提个醒。

ATS是在2015年由苹果引入的强化网络传输安全的标准,要求所有的App在从Web端获取数据的时候都要使用安全的HTTPS链接,并进一步强调要使用最新的TLS1.2版本的HTTPS。

注:可以从网址前缀http://或者https://来区别两种标准

苹果也清楚还有大量的Web内容仍旧在使用不安全的HTTP链接,因此定义了ATS开关选项的集合(Dictionary),允许大家通过info.plist文件设置(如下图所示),不过我估计99.9%的开发者会选择先打开允许任意链接的选项,然后大部分人过段时间就忘了这回事,好像什么事都没有发生过。

现在是醒过来面对现实的时候了,苹果在WWDC时已经透漏,强制使用ATS的大限是今年底,也就是说,从17年开始苹果审核团队会将ATS作为强制审核项,以苹果的脾气,可能会硬来,反正已经给了一年多的缓冲期了!

到时一刀切怎么办?作为CP应该如何处理?我们今天就来详聊下这个问题!

首先,我们还是要了解具体的政策,然后在此基础上做出合理的猜测,这样每家CP根据自己的具体情况评估之后就知道该怎么做了。然而无论如何,大的原则是要快速做出反应,不要存有侥幸心理!

当然,HTTPS是大势所趋,苹果强制执行ATS也是本着对用户负责的态度,无可厚非。在执行的尺度上,我认为苹果也会灵活的评估,肯定有一些"I will know it when I see it"的模糊情况,想必App Store的老司机都心领神会。

虽然说17年ATS会成为强制标准,但是这里面还是分为几种不同的情况的,为了帮助大家理解,沙铭从推广和开发两个角度去说

推广角度

 

  1. App的内容来源如果有自家网站,去和技术核对一下是使用哪种传输标准,如果仍然使用HTTP或者是低于TLS1.2的HTTPS,要不就赶紧整改,要不就准备和苹果审核磨,准备好申请特例的充分理由。在我的星座苹果系列中有两篇文章《善变双子,难言的苦衷:史上最强审核团队起底,掩藏的秘密》和《闷瓜金牛,本应昭告天下却缄默:开发者账号,审核加速揭秘》,了解应该如何跟审核团队打交道,以及开发者账号在审核过程中的作用,还是非常必要的。

  2. App的内容如果有来自已知的第三方,可以暂时不用管,让技术设置一下ATS的开关(下文中会涉及),不过最好的做法是和第三方沟通下,敦促他们所有的传输都使用TLS1.2加密。

  3. App的内容来自于不可知的第三方,比如说允许用户通过App访问任意网站,可以忽视ATS,不过来自于自有网站的内容还是必须遵循第一条。同时询问技术使用的是何种框架,如果是WebKit,建议切换到Safari,否则今后可能还会有麻烦事。

  4. 如果是提供流媒体内容的App,不想服从于ATS,就必须在源头进行流媒体加密,并且使用苹果的流媒体框架,就可以暂时无视ATS。

因此,大家可以根据自己的情况来决定是采用哪种对策,当然上策是尽量使用TLS1.2的HTTPS安全标准,实在不行就要多想想如何跟苹果解释,以争取特例!

不过有个问题目前还不是特别明朗:对于那些不达标准的已上架App如何处理?我个人不太相信App会因为这个原因被下架,苹果最可能的做法是等到App迭代时拒绝上架。这时可能又有人会想了:那我就不更新!呵呵,也许也是一种办法。总而言之,新一轮的猫捉老鼠游戏又要开始了。

开发角度

1. ATS设置中打开了以下开关,又没有提交合理的解释,那么会100%被拒

  1. NSAllowsArbitraryLoads,打开此开关相当于关闭ATS

  2. NSExceptionAllowsInsecureHTTPLoads,使用自有网站的HTTP链接

  3. NSExceptionMinimumTLSVersion,使用自有网站低于TLS1.2标准的HTTPS链接

至于什么是合理的解释,这个就完全是一个主观判断的过程了,也许有的人觉得自己的理由很充分,但是如果不能够说服苹果审核,你的App就是上不了线,这考验团队的沟通技巧和英文水平!

2. 以下几种情况苹果给予特例,不需要提供解释:

  • App提供流媒体服务,媒体源已经对内容进行了加密,这时只要使用苹果的AV Foundation框架加载内容,就可以无视ATS;

  • 不使用Forward Secrecy(完全前向保密)技术,可以在ATS设置中关闭NSExceptionRequiresForwardSecrecy开关(缺省是打开);

  • NSThirdPartyException,使用第三方链接,而这里面又包括使用第三方HTTP链接或者是低于TLS1.2版本的HTTPS等几个开关。

估计有人会想,那我把自己的网站伪装成第三方网站,使用这个特例不就好了,Bingo!如果你能经得起被拒甚至更重的惩罚,也许可以试试,不过有理由相信苹果有多种方法判断关联网站,承受不起风险者勿试。

3. ATS设置中还有个开关NSAllowsArbitraryLoadsInWebContent,打开后允许使用任意Web链接,这个和NSAllowsArbitraryLoads有些区别,主要是针对那些提供类似于Web浏览器服务的App,由于事先不知道用户会浏览哪些网站,因此无法限制链接类型。

不过苹果建议如果要提供浏览器类的服务,请使用SFSafariViewController,优于WKWebView,后者更适用于对用户访问web内容更有把控的情况。

关于ATS的详细设置,开发可以参考苹果官方文档。

此外,苹果还建议放弃以下较老的标准

  • RC4

  • SSLv3

  • SHA-1

  • 3DES

并向最新的安全标准迁移,包括

  • Forward Secrecy

  • SHA-2

  • OCSP Stapling

App上架重磅通知:App Store安全新规17年1月生效的更多相关文章

  1. 苹果iOS11重磅改版App Store,开发者应该了解这些

    苹果在WWDC2017上重磅发布iOS11,其中一项重大更新就是对App Sore的全新改版,我们一起来看看具体有哪些变化,以及对我们会带来哪些影响. App Store的分类变化 在iOS10以前, ...

  2. 2018最新苹果APP上架App Store流程(超详细)

    本文转发:https://blog.csdn.net/xxw888/article/details/73618837 2018最新整理iOS app上架app详细教程 上架iOS需要一个付费688的开 ...

  3. [苹果APP上架]ios App Store上架详细教程-一条龙顺滑上架-适合小白

    如何在 2022 年将您的应用提交到 App Store 您正在启动您的第一个应用程序,或者距离上次已经有一段时间了.作者纸飞机@cheng716051来给你讲讲将应用程序提交到 App Store ...

  4.  iOS App 上架App Store及提交审核详细教程

    上架App Store审核分7步进行: 1.安装iOS上架辅助软件Appuploader 2.申请iOS发布证书(p12) 3.申请iOS发布描述文件(mobileprovision) 4.打包ipa ...

  5. 斗牛app上架应用宝、牛牛手机游戏推广、百人牛牛app应用开发、棋牌游戏上传、手游APP优化

    联系QQ:305-710439斗牛app上架应用宝.牛牛手机游戏推广.百人牛牛app应用开发.棋牌游戏上传.手游APP优化 iOS开发iPhone/iPad平台安卓手机软件开发机型覆盖范围 超过113 ...

  6. iOS App上架流程(2016详细版)

    iOS App上架流程(2016详细版) 原文地址:http://www.jianshu.com/p/b1b77d804254 感谢大神整理的这么详细 一.前言: 作为一名iOSer,把开发出来的Ap ...

  7. 史上最用心的 iOS App 上架流程

    题记 麻痹起来嗨!看网上那么多的教程,依然在我心爱的爱屁屁在上架的时候遇到各种 J8 问题,最大的问题就是:Xcode 证书什么的,Provisioning Profile 什么的,Debug 什么的 ...

  8. iOS开发从申请开发账号到APP上架的整体流程详解

    应公司要求,写一份文档从申请账号一直到APP上架的整体流程,下面进入正文. https://blog.csdn.net/qq_35612929/article/details/78754470 首先第 ...

  9. 苹果软件App上架问题

    0.官方网站 开发者中心 itunes connect 优酷 哔哩哔哩 腾讯视频 1.上架流程 1.1 开发者账号申请 2017年苹果企业开发者账请完号申整指南 iOS开发之苹果开发者账号注册申请流程 ...

随机推荐

  1. Android网络请求之OkHttp框架

    首先声明权限 <uses-permission android:name="android.permission.INTERNET"/> 在build.gradle中加 ...

  2. org-mode入门教程

    org-mode 入门教程By Z.H. Fu 切问录 www.fuzihao.org org-mode 入门教程 org-mode是Emacs提供的一个强大的编辑模式,可以用于做会议笔记以及制作各种 ...

  3. 使用supervisor过程的坑

    1.安装:由于使用的是公司的虚拟机,所以使用pip install supervisor的过程遇到很多权限问题. 中间尝试使用sudo pip install supervisor的方式安装,但是使用 ...

  4. JavaScript前世今生

    JavaScript前世今生,HelloWorld与开发环境 JavaScript历史 大概在1992年,一家称作Nombas的公司开始开发一种叫做C--(C-minus-minus,简称Cmm)的嵌 ...

  5. Android Studio体验(一)--Window版本安装

    如果说之前看见有人用Android Studio你还是不屑一顾的话,那么现在该改变态度了,正如我一样,之前一直习惯于Android内置ADT插件的捆绑Ecliple,现在Android Studio发 ...

  6. mybatis异常 :元素内容必须由格式正确的字符数据或标记组成。

    今天同事写一个查询接口的时候,出错:元素内容必须由格式正确的字符数据或标记组成. 错误原因:mybatis查询的时候,需要用到运算符 小于号:< 和  大于号: >,在mybatis配置文 ...

  7. java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean

    项目报错:java.lang.ClassNotFoundException: org.apache.commons.beanutils.DynaBean 解决方法: 在pom.xml中加入如下依赖: ...

  8. 你使用 Web 平台安装程序命令行工具

    你使用 Web 平台安装程序命令行工具 获取的软件由其所有者授权给你.Microsoft 未授予你第三方软件的任何权利.已成功加载主源: https://go.microsoft.com/?linki ...

  9. (算法)前K大的和

    题目: 1.有两个数组A和B,每个数组有k个数,从两个数组中各取一个数加起来可以组成k*k个和,求这些和中的前k大. 2.有N个数组,每个数组有k个数,从N个数组中各取一个数加起来可以组成k^N个和, ...

  10. ORACLE关于锁表查询的部分SQL

    http://www.cnblogs.com/quanweiru/archive/2012/08/28/2660700.html --查询表空间名称和大小 SELECT UPPER (F.TABLES ...