蘋(píng)果為什么要全面禁止熱更新(2)
蘋(píng)果是不是完全禁止了熱更新技術(shù)
并不是,目前為止收到警告郵件的開(kāi)發(fā)者絕大部分使用了 JS-Patch 或 Rollout 類(lèi)庫(kù),剩下未直接使用這些類(lèi)庫(kù)的開(kāi)發(fā)者,目前初步估計(jì)很可能是在集成的第三方 SDK 中使用了上述框架。而未采用上述框架的熱更新技術(shù),目前為止并未收到影響。而絕大部分游戲引擎由于并沒(méi)有調(diào)用這些類(lèi)庫(kù),也自然沒(méi)有受到影響。
當(dāng)然,后續(xù)事態(tài)會(huì)不會(huì)進(jìn)一步擴(kuò)大,還需要看蘋(píng)果接下來(lái)的策略。但是筆者認(rèn)為,游戲中的熱更新技術(shù)并不會(huì)受到蘋(píng)果的禁止,作為一名技術(shù)人員,我們不討論產(chǎn)品、商業(yè)等問(wèn)題,只從技術(shù)角度來(lái)看,為什么 JSPatch 蘋(píng)果認(rèn)為是不允許的,而游戲引擎的熱更新技術(shù),蘋(píng)果目前認(rèn)為是可以的。
蘋(píng)果為什么要禁止 JSPatch 等熱更新技術(shù)
JSPatch 的原理是,開(kāi)發(fā)者編寫(xiě) JavaScript 代碼,利用蘋(píng)果內(nèi)置的 JavaScriptCore.Framework 執(zhí)行,以實(shí)現(xiàn)熱更新功能。這一點(diǎn)看似也符合標(biāo)準(zhǔn),但是在技術(shù)上,存在著重大安全隱患,參考 JSPatch 的業(yè)務(wù)邏輯:
簡(jiǎn)單理解,JSPatch 可以理解為所有的 Objective-C 的 API 進(jìn)行了映射,允許開(kāi)發(fā)者在 JS 端調(diào)用任意原生代碼,這顯然是極其危險(xiǎn)的。假設(shè)這段代碼是通過(guò)熱更新技術(shù)下載執(zhí)行的,如果在中間存在黑客,把這段代碼動(dòng)態(tài)替換掉,比如修改為獲取用戶(hù)通訊錄并上傳到黑客的服務(wù)器,就會(huì)造成重大的安全問(wèn)題。
為什么游戲熱更新技術(shù)可以被理解為是安全的
與 JSPatch 不同的是,游戲熱更新技術(shù)主要的實(shí)現(xiàn)方式是把動(dòng)態(tài)腳本下載之后,讓動(dòng)態(tài)腳本調(diào)用游戲引擎提供的接口實(shí)現(xiàn)缺陷修復(fù)。與 JSPatch 不同的是,動(dòng)態(tài)腳本并不能任意調(diào)用全部原生代碼,而是只能根據(jù)游戲引擎提供的接口調(diào)用相關(guān)功能。在這個(gè)過(guò)程中,游戲引擎的原生端作為一個(gè)安全沙箱,提供了一個(gè)安全的保護(hù)層,只要游戲引擎不要對(duì)外提供獲取通訊錄的接口,黑客就無(wú)法通過(guò)替換動(dòng)態(tài)腳本的方式獲取用戶(hù)的隱私資料。進(jìn)而可以被認(rèn)為是安全的,自然不在蘋(píng)果的禁止范圍內(nèi)。
小結(jié)
蘋(píng)果認(rèn)為熱更新技術(shù)容易被黑客利用,造成重大安全問(wèn)題。在官方警告郵件中,也是在進(jìn)行如此描述。
JSPatch 這種基于反射,允許獲取全部系統(tǒng)接口的方式,確實(shí)存在著一定的安全風(fēng)險(xiǎn)。雖然可以通過(guò)安全策略去防范,但是蘋(píng)果決定一刀切,嚴(yán)格禁止。
游戲引擎由于不是利用反射機(jī)制實(shí)現(xiàn)的熱更新,不能獲取全部系統(tǒng)接口,所以目前蘋(píng)果認(rèn)為是安全的,無(wú)需警告。
未來(lái),蘋(píng)果還要在中國(guó)市場(chǎng)掀起多大的風(fēng)浪,我們無(wú)從得知。不過(guò)可以預(yù)料的是,在6月12日前后,App Store 的 App 下架數(shù)量很可能會(huì)出現(xiàn)一次高峰。App Store的很多APP將消失在我們眼前。這里還是要提醒大家,關(guān)注自家 iTC 后臺(tái)有沒(méi)有收到相關(guān)通知(很多同學(xué)的賬號(hào)可不止一兩個(gè)),如果收到就要盡快對(duì)產(chǎn)品進(jìn)行調(diào)整了,刪除相關(guān)代碼并提交更新。
看過(guò)蘋(píng)果為什么要全面禁止熱更新的人還看了:
3.蘋(píng)果手機(jī)如何關(guān)閉ios更新