欧美色女人,一亲二插日韩网站,国产高清网站,成人四区,97人妻人人揉人人澡人人爽国产

97973手游網(wǎng) > iOS游戲頻道 > 業(yè)界 > 正文

深度分析:手游熱更新技術(shù)會被蘋果禁止么?

打開微信“掃一掃”將本文分享至朋友圈。
97973手游網(wǎng)微信號:m97973,最好玩的手游資訊。
我要分享
|   
2017-03-10 11:53:15   來源:游戲產(chǎn)業(yè)網(wǎng)

  最近不少 iOS 開發(fā)者都收到蘋果的警告郵件,在郵件中,蘋果稱開發(fā)者使用了動態(tài)代碼更新技術(shù),要求開發(fā)者刪除相關(guān)代碼,并重新提交一個新的 App 版本以供審核。

  白鷺引擎的原生打包方案使用的就是JavascriptCore,所以對于使用白鷺引擎打包的原生游戲沒有影響,請大家正常使用。

  郵件原文翻譯如下:

  尊敬的開發(fā)者,

  您的應(yīng)用,擴展程序和/或鏈接框架似乎包含明確設(shè)計的代碼,能夠在應(yīng)用審核批準(zhǔn)后更改應(yīng)用的行為或功能,這不符合Apple開發(fā)人員計劃許可協(xié)議和應(yīng)用的第3.3.2節(jié)商店審查指南2.5.2。此代碼與遠(yuǎn)程資源相結(jié)合,可以幫助對應(yīng)用程序的行為進(jìn)行重大更改,與最初對App Store進(jìn)行審核相比。雖然當(dāng)前可能不使用此功能,但它可能會加載私有框架,私有方法,并支持未來的功能更改。

  這包括將任意參數(shù)傳遞給動態(tài)方法(如dlopen(),dlsym(),respondingToSelector :, performSelector :, method_exchangeImplementations())和運行遠(yuǎn)程腳本以便更改應(yīng)用程序行為或調(diào)用API的任何代碼,下載的腳本。即使遠(yuǎn)程資源不是故意惡意的,它也可能很容易被劫持通過中間人(MiTM)攻擊,這可能對您的應(yīng)用程序的用戶造成嚴(yán)重的安全漏洞。

  請對您的應(yīng)用執(zhí)行深入審核,并刪除符合上述功能的任何代碼,框架或SDK,然后再提交下一個更新以供審核。

  而上文提到的蘋果開發(fā)者協(xié)議3.3.2節(jié)具體內(nèi)容如下:

  一個應(yīng)用程序不應(yīng)該下載或安裝任何可執(zhí)行代碼。解釋執(zhí)行的代碼可以在應(yīng)用內(nèi)使用,如果所有的腳本、代碼、和解釋器都被打包在應(yīng)用內(nèi)而沒有被下載。前述內(nèi)容的唯一的例外在于下載的腳本和代碼使用了Apple內(nèi)置的WebKit框架或JavascriptCore,并且對應(yīng)的腳本或代碼并沒有改變這個應(yīng)用提供功能和特性的主要目的,與提交到AppStore的版本以及相應(yīng)的宣傳描述相符。

  白鷺引擎的原生打包方案使用的就是JavascriptCore,所以對于使用白鷺引擎打包的原生游戲沒有影響,請大家正常使用。

  截止目前為止,我們也沒有收到使用白鷺引擎打包游戲的開發(fā)者收到了蘋果警告郵件的消息。

  一句話總結(jié):使用白鷺引擎并通過 Egret-iOS-Support 發(fā)布原生游戲,目前并不會收到影響。

  以下內(nèi)容為白鷺引擎架構(gòu)師的個人觀點,歡迎在技術(shù)層面進(jìn)行討論。

  蘋果是不是完全禁止了熱更新技術(shù)?

  并不是,目前為止收到警告郵件的開發(fā)者絕大部分使用了 JS-Patch 或 Rollout 類庫,剩下未直接使用這些類庫的開發(fā)者,目前初步估計很可能是在集成的第三方SDK 中使用了上述框架。而未采用上述框架的熱更新技術(shù),目前為止并未收到影響。而絕大部分游戲引擎由于并沒有調(diào)用這些類庫,也自然沒有受到影響。

  當(dāng)然,后續(xù)事態(tài)會不會進(jìn)一步擴大,還需要看蘋果接下來的策略。但是筆者認(rèn)為,游戲中的熱更新技術(shù)并不會受到蘋果的禁止,作為一名技術(shù)人員,我們不討論產(chǎn)品、商業(yè)等問題,只從技術(shù)角度來看,為什么 JSPatch蘋果認(rèn)為是不允許的,而游戲引擎的熱更新技術(shù),蘋果目前認(rèn)為是可以的

  蘋果為什么要禁止 JSPatch 等熱更新技術(shù)?

  JSPatch 的原理是,開發(fā)者編寫 JavaScript 代碼,利用蘋果內(nèi)置的 JavaScriptCore.Framework 執(zhí)行,以實現(xiàn)熱更新功能。這一點看似也符合標(biāo)準(zhǔn),但是在技術(shù)上,存在著重大安全隱患,參考 JSPatch 的業(yè)務(wù)邏輯:

  require(‘UIView’)

  var view = UIView.alloc()。init()

  view.setBackgroundColor(require(‘UIColor’)。grayColor())

  view.setAlpha(0.5)

  簡單理解,JSPatch可以理解為所有的 Objective-C 的 API 進(jìn)行了映射,允許開發(fā)者在 JS 端調(diào)用任意原生代碼。這顯然是極其危險的。假設(shè)這段代碼是通過熱更新技術(shù)下載執(zhí)行的,如果在中間存在黑客,把這段代碼動態(tài)替換掉,比如修改為獲取用戶通訊錄并上傳到黑客的服務(wù)器,就會造成重大的安全問題。

  為什么游戲熱更新技術(shù)可以被理解為是安全的

  與 JSPatch 不同的是,游戲熱更新技術(shù)主要的實現(xiàn)方式是把動態(tài)腳本下載之后,讓動態(tài)腳本調(diào)用游戲引擎提供的接口實現(xiàn)缺陷修復(fù)。與 JSPatch不同的是,動態(tài)腳本并不能任意調(diào)用全部原生代碼,而是只能根據(jù)游戲引擎提供的接口調(diào)用相關(guān)功能。在這個過程中,游戲引擎的原生端作為一個安全沙箱,提供了一個安全的保護(hù)層,只要游戲引擎不要對外提供獲取通訊錄的接口,黑客就無法通過替換動態(tài)腳本的方式獲取用戶的隱私資料。進(jìn)而可以被認(rèn)為是安全的,自然不在蘋果的禁止范圍內(nèi)。

  小結(jié):

  · 蘋果認(rèn)為熱更新技術(shù)容易被黑客利用,造成重大安全問題。在官方警告郵件中,也是在進(jìn)行如此描述。

  · JSPatch 這種基于反射,允許獲取全部系統(tǒng)接口 的方式,確實存在著一定的安全風(fēng)險。雖然可以通過安全策略去防范,但是蘋果決定一刀切,嚴(yán)格禁止

  · 游戲引擎由于不是利用反射機制實現(xiàn)的熱更新,不能獲取全部系統(tǒng)接口,所以目前蘋果認(rèn)為是安全的,無需警告

  · 筆者作為一名技術(shù)人員,以上所有內(nèi)容,都是基于客觀的技術(shù)層面進(jìn)行討論,請不要上升到“商業(yè)模式”、“生態(tài)閉環(huán)”等層面的“高度”。

97973手游網(wǎng)聲明:97973手游網(wǎng)登載此文出于傳遞更多信息之目的,并不意味著贊同其觀點或證實其描述。

資訊熱點

分享頁面到:
搜索需要的App:

97973手游網(wǎng)簡介 | 論壇社區(qū) | 網(wǎng)站合作 | 廣告服務(wù) | 聯(lián)系我們 | 免責(zé)聲明 | 招聘信息

Copyright © 1996-2015 SINA Corporation, All Rights Reserved

北京游夢創(chuàng)想網(wǎng)絡(luò)技術(shù)有限公司 版權(quán)所有