做推广的也许并不了解什么是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,要不就赶紧整改,要不就准备和苹果审核磨,准备好申请特例的充分理由。了解应该如何跟审核团队打交道,以及开发者账号在审核过程中的作用,还是非常必要的。
第二
App的内容如果有来自已知的第三方,可以暂时不用管,让技术设置一下ATS的开关(下文中会涉及),不过最好的做法是和第三方沟通下,敦促他们所有的传输都使用TLS1.2加密。
第三
App的内容来自于不可知的第三方,比如说允许用户通过App访问任意网站,可以忽视ATS,不过来自于自有网站的内容还是必须遵循第一条。同时询问技术使用的是何种框架,如果是WebKit,建议切换到Safari,否则今后可能还会有麻烦事。
第四
如果是提供流媒体内容的App,不想服从于ATS,就必须在源头进行流媒体加密,并且使用苹果的流媒体框架,就可以暂时无视ATS。
因此,大家可以根据自己的情况来决定是采用哪种对策,当然上策是尽量使用TLS1.2的HTTPS安全标准,实在不行就要多想想如何跟苹果解释,以争取特例!
不过有个问题目前还不是特别明朗:对于那些不达标准的已上架App如何处理?我个人不太相信App会因为这个原因被下架,苹果最可能的做法是等到App迭代时拒绝上架。这时可能又有人会想了:那我就不更新!呵呵,也许也是一种办法。总而言之,新一轮的猫捉老鼠游戏又要开始了。
2、开发角度
第一
ATS设置中打开了以下开关,又没有提交合理的解释,那么会100%被拒
• NSAllowsArbitraryLoads,打开此开关相当于关闭ATS
• NSExceptionAllowsInsecureHTTPLoads,使用自有网站的HTTP链接
• NSExceptionMinimumTLSVersion,使用自有网站低于TLS1.2标准的HTTPS链接
至于什么是合理的解释,这个就完全是一个主观判断的过程了,也许有的人觉得自己的理由很充分,但是如果不能够说服苹果审核,你的App就是上不了线,这考验团队的沟通技巧和英文水平!
第二
以下几种情况苹果给予特例,不需要提供解释:
• App提供流媒体服务,媒体源已经对内容进行了加密,这时只要使用苹果的AV Foundation框架加载内容,就可以无视ATS;
• 不使用Forward Secrecy(完全前向保密)技术,可以在ATS设置中关闭NSExceptionRequiresForwardSecrecy开关(缺省是打开);
• NSThirdPartyException,使用第三方链接,而这里面又包括使用第三方HTTP链接或者是低于TLS1.2版本的HTTPS等几个开关。
估计有人会想,那我把自己的网站伪装成第三方网站,使用这个特例不就好了,Bingo!如果你能经得起被拒甚至更重的惩罚,也许可以试试,不过有理由相信苹果有多种方法判断关联网站,承受不起风险者勿试。
第三
ATS设置中还有个开关NSAllowsArbitraryLoadsInWebContent,打开后允许使用任意Web链接,这个和NSAllowsArbitraryLoads有些区别,主要是针对那些提供类似于Web浏览器服务的App,由于事先不知道用户会浏览哪些网站,因此无法限制链接类型。
不过苹果建议如果要提供浏览器类的服务,请使用SFSafariViewController,优于WKWebView,后者更适用于对用户访问web内容更有把控的情况。
关于ATS的详细设置,开发可以参考苹果官方文档。
此外,苹果还建议放弃以下较老的标准:
• RC4
• SSLv3
• SHA-1
• 3DES
并向最新的安全标准迁移,包括:
• Forward Secrecy
• SHA-2
• OCSP Stapling
作者:沙铭,OOPSING咨询创始人,国内研究苹果生态最深入的人之一,上海交通大学特聘讲师,《App推广实战技能(含ASO)》在线课程和《星座苹果》系列连载作者。个人公众号:沙铭世界观,欢迎关注。