來源|沙銘世界觀 ID:mobview
作者|沙銘
做APP推廣的也許并不了解什么是ATS(App Transport Security),不過這卻是一個定時炸彈,引爆點(diǎn)在2016年底,后果就是你不注意,可能就會導(dǎo)致產(chǎn)品無法在App Store上架,雖然沒有違規(guī)操作下架那么嚴(yán)重,但結(jié)果同樣致命?,F(xiàn)在還有2個月的緩沖期,但還有很多開發(fā)者沒有想到這一點(diǎn),有必要給大家提個醒。
ATS是在2015年由蘋果引入的強(qiáng)化網(wǎng)絡(luò)傳輸安全的標(biāo)準(zhǔn),要求所有的App在從Web端獲取數(shù)據(jù)的時候都要使用安全的HTTPS鏈接,并進(jìn)一步強(qiáng)調(diào)要使用最新的TLS1.2版本的HTTPS。
注:可以從網(wǎng)址前綴http://或者h(yuǎn)ttps://來區(qū)別兩種標(biāo)準(zhǔn)
蘋果也清楚還有大量的Web內(nèi)容仍舊在使用不安全的HTTP鏈接,因此定義了ATS開關(guān)選項的集合(Dictionary),允許大家通過info.plist文件設(shè)置(如下圖所示),不過我估計99.9%的開發(fā)者會選擇先打開允許任意鏈接的選項,然后大部分人過段時間就忘了這回事,好像什么事都沒有發(fā)生過。
現(xiàn)在是醒過來面對現(xiàn)實(shí)的時候了,蘋果在WWDC時已經(jīng)透漏,強(qiáng)制使用ATS的大限是今年底,也就是說,從17年開始蘋果審核團(tuán)隊會將ATS作為強(qiáng)制審核項,以蘋果的脾氣,可能會硬來,反正已經(jīng)給了一年多的緩沖期了!
到時一刀切怎么辦?作為CP應(yīng)該如何處理?我們今天就來詳聊下這個問題!
首先,我們還是要了解具體的政策,然后在此基礎(chǔ)上做出合理的猜測,這樣每家CP根據(jù)自己的具體情況評估之后就知道該怎么做了。然而無論如何,大的原則是要快速做出反應(yīng),不要存有僥幸心理!
當(dāng)然,HTTPS是大勢所趨,蘋果強(qiáng)制執(zhí)行ATS也是本著對用戶負(fù)責(zé)的態(tài)度,無可厚非。在執(zhí)行的尺度上,我認(rèn)為蘋果也會靈活的評估,肯定有一些"I will know it when I see it"的模糊情況,想必App Store的老司機(jī)都心領(lǐng)神會。
雖然說17年ATS會成為強(qiáng)制標(biāo)準(zhǔn),但是這里面還是分為幾種不同的情況的,為了幫助大家理解,沙銘從推廣和開發(fā)兩個角度去說
一、互聯(lián)網(wǎng)推廣角度
第一
App的內(nèi)容來源如果有自家網(wǎng)站,去和技術(shù)核對一下是使用哪種傳輸標(biāo)準(zhǔn),如果仍然使用HTTP或者是低于TLS1.2的HTTPS,要不就趕緊整改,要不就準(zhǔn)備和蘋果審核磨,準(zhǔn)備好申請?zhí)乩某浞掷碛?。在我的星座蘋果系列中有兩篇文章《善變雙子,難言的苦衷:史上最強(qiáng)審核團(tuán)隊起底,掩藏的秘密》和《悶瓜金牛,本應(yīng)昭告天下卻緘默:開發(fā)者賬號,審核加速揭秘》,了解應(yīng)該如何跟審核團(tuán)隊打交道,以及開發(fā)者賬號在審核過程中的作用,還是非常必要的。
第二
App的內(nèi)容如果有來自已知的第三方,可以暫時不用管,讓技術(shù)設(shè)置一下ATS的開關(guān)(下文中會涉及),不過最好的做法是和第三方溝通下,敦促他們所有的傳輸都使用TLS1.2加密。
第三
App的內(nèi)容來自于不可知的第三方,比如說允許用戶通過App訪問任意網(wǎng)站,可以忽視ATS,不過來自于自有網(wǎng)站的內(nèi)容還是必須遵循第一條。同時詢問技術(shù)使用的是何種框架,如果是WebKit,建議切換到Safari,否則今后可能還會有麻煩事。
第四
如果是提供流媒體內(nèi)容的App,不想服從于ATS,就必須在源頭進(jìn)行流媒體加密,并且使用蘋果的流媒體框架,就可以暫時無視ATS。
因此,大家可以根據(jù)自己的情況來決定是采用哪種對策,當(dāng)然上策是盡量使用TLS1.2的HTTPS安全標(biāo)準(zhǔn),實(shí)在不行就要多想想如何跟蘋果解釋,以爭取特例!
不過有個問題目前還不是特別明朗:對于那些不達(dá)標(biāo)準(zhǔn)的已上架App如何處理?我個人不太相信App會因為這個原因被蘋果下架,蘋果最可能的做法是等到App迭代時拒絕上架。這時可能又有人會想了:那我就不更新!呵呵,也許也是一種辦法??偠灾?,新一輪的貓捉老鼠游戲又要開始了。
二、開發(fā)角度
第一
ATS設(shè)置中打開了以下開關(guān),又沒有提交合理的解釋,那么會100%被拒
-
NSAllowsArbitraryLoads,打開此開關(guān)相當(dāng)于關(guān)閉ATS
-
NSExceptionAllowsInsecureHTTPLoads,使用自有網(wǎng)站的HTTP鏈接
-
NSExceptionMinimumTLSVersion,使用自有網(wǎng)站低于TLS1.2標(biāo)準(zhǔn)的HTTPS鏈接
至于什么是合理的解釋,這個就完全是一個主觀判斷的過程了,也許有的人覺得自己的理由很充分,但是如果不能夠說服蘋果審核,你的App就是上不了線,這考驗團(tuán)隊的溝通技巧和英文水平!
第二
以下幾種情況蘋果給予特例,不需要提供解釋:
-
App提供流媒體服務(wù),媒體源已經(jīng)對內(nèi)容進(jìn)行了加密,這時只要使用蘋果的AV Foundation框架加載內(nèi)容,就可以無視ATS;
-
不使用Forward Secrecy(完全前向保密)技術(shù),可以在ATS設(shè)置中關(guān)閉NSExceptionRequiresForwardSecrecy開關(guān)(缺省是打開);
-
NSThirdPartyException,使用第三方鏈接,而這里面又包括使用第三方HTTP鏈接或者是低于TLS1.2版本的HTTPS等幾個開關(guān)。
估計有人會想,那我把自己的網(wǎng)站偽裝成第三方網(wǎng)站,使用這個特例不就好了,Bingo!如果你能經(jīng)得起被拒甚至更重的懲罰,也許可以試試,不過有理由相信蘋果有多種方法判斷關(guān)聯(lián)網(wǎng)站,承受不起風(fēng)險者勿試。
第三
ATS設(shè)置中還有個開關(guān)NSAllowsArbitraryLoadsInWebContent,打開后允許使用任意Web鏈接,這個和NSAllowsArbitraryLoads有些區(qū)別,主要是針對那些提供類似于Web瀏覽器服務(wù)的App,由于事先不知道用戶會瀏覽哪些網(wǎng)站,因此無法限制鏈接類型。
不過蘋果建議如果要提供瀏覽器類的服務(wù),請使用SFSafariViewController,優(yōu)于WKWebView,后者更適用于對用戶訪問web內(nèi)容更有把控的情況。
關(guān)于ATS的詳細(xì)設(shè)置,開發(fā)可以參考蘋果官方文檔。
此外,蘋果還建議放棄以下較老的標(biāo)準(zhǔn)
-
RC4
-
SSLv3
-
SHA-1
-
3DES
并向最新的安全標(biāo)準(zhǔn)遷移,包括
-
Forward Secrecy
-
SHA-2
-
OCSP Stapling
愛盈利-運(yùn)營小咖秀(www.jza6.com) 始終堅持研究分享移動互聯(lián)網(wǎng)App運(yùn)營推廣經(jīng)驗、策略、全案、渠道等純干貨知識內(nèi)容;是廣大App運(yùn)營從業(yè)者的知識啟蒙、成長指導(dǎo)、進(jìn)階學(xué)習(xí)的集聚平臺;
想了解更多移動互聯(lián)網(wǎng)干貨知識,請關(guān)注微信公眾號運(yùn)營小咖秀(ID: yunyingshow)