作者:沙铭

来源:公众号 沙铭世界观

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. [MAC OS ] UserDefaults

    reference to : http://www.jianshu.com/p/d59b004b5ea7 1.用UserDefaults存储配置信息 注:本次使用UserDefaults存储信息是在不 ...

  2. Android网络请求之OkHttp框架

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

  3. OTL翻译(9) --常量的SQL语句

    常量的SQL语句 一个没有绑定变量的SQL语句.SQL语句块或是存储过程就被称为常量的SQL语句.OTL通过一个静态的函数来执行这样的SQL语句. 例如: // static otl_cursor:: ...

  4. 使用Spring Security和OAuth2实现RESTful服务安全认证

    这篇教程是展示如何设置一个OAuth2服务来保护REST资源. 源代码下载github. (https://github.com/iainporter/oauth2-provider)你能下载这个源码 ...

  5. 未知高度的图片在div设置垂直居中

    方法一: 该方法是将外部容器的显示模式设置成display:table,img标签外部再嵌套一个span标签,并设置span的显示模式为display:table-cell,这样就可以很方便的使用ve ...

  6. 【ACM】杭电ACM题一直WA求高手看看代码

    数据测试了好几个都没问题,可以就是WA不让过,检测了2个小时还是没发现有什么问题T_T!!求高手看看代码,小弟在此谢谢各位哦! #include <stdio.h> #include &l ...

  7. 12款程序员们最爱的Bootstrap模板

    如果你还没有开始使用Bootstrap模板,那你可真是有够OUT,这是一个帮助你快速开发的工具,Bootstrap是基于jQuery框架开发的,它在jQuery框架的基础上进行了更为个性化和人性化的完 ...

  8. 调整UIPickerView高度

    Advantages: Makes setFrame of UIPickerView behave like it should No transform code within your UIVie ...

  9. PyQt5教程——菜单和工具栏(3)

    PyQt5中的菜单和工具栏 在这部分的PyQt5教程中,我们将创建菜单和工具栏.菜单式位于菜单栏的一组命令操作.工具栏是应用窗体中由按钮和一些常规命令操作组成的组件. 主窗口 QMainWindow类 ...

  10. hadoop safemode error

    http://www.cnblogs.com/hustcat/archive/2010/06/30/1768506.html 1.safemode bin/hadoop fs -put ./input ...