蘋果近期給大部分接入 JSPatch 的 APP 發(fā)送了警告,提示下個(gè)版本去掉擁有動(dòng)態(tài)修改功能的代碼或框架。
我們理解蘋果這個(gè)決定是為了杜絕 JSPatch 使用不當(dāng)導(dǎo)致的安全隱患以及惡意濫用,在此建議大家在下個(gè)版本先去除 JSPatch。
熱修復(fù)本身可以顯著提升 App 質(zhì)量,對(duì)于 iOS 平臺(tái)是很有益的事情,鑒于熱修復(fù)的需求量龐大,我們也在思考如何讓熱修復(fù)繼續(xù)發(fā)揮作用提升 iOS 平臺(tái) APP 的質(zhì)量,同時(shí)又可以解決這里面的安全和濫用的隱患。
對(duì)此后續(xù) JSPatch 平臺(tái)會(huì)有以下升級(jí)改進(jìn):
1.強(qiáng)制腳本下發(fā)必須使用自定義 RSA 私鑰加密
這個(gè)功能 JSPatch 平臺(tái)一直提供,不過不是強(qiáng)制使用,默認(rèn)會(huì)使用平臺(tái)統(tǒng)一的 RSA 私鑰加密,這里會(huì)有一定的安全隱患。強(qiáng)制用戶使用自己生成的 RSA 私鑰后,平臺(tái)本身完全無權(quán)限給用戶下發(fā)腳本,就算平臺(tái)被第三方惡意入侵也不會(huì)對(duì) APP 有任何影響,不可能出現(xiàn)大規(guī)模安全事件。
2.禁止 SDK 接入
SDK 接入 JSPatch 后有能力對(duì)所有接入該 SDK 的 APP 下發(fā)腳本,SDK 覆蓋面大以后,這里也是一個(gè)安全隱患,平臺(tái)會(huì)禁止 SDK 接入 。
3.檢查每個(gè)下發(fā)的腳本,禁止調(diào)用私有 API,禁止下發(fā)大量代碼
這里是避免熱修復(fù)被濫用,利用動(dòng)態(tài)下發(fā)去做一些違反 Apple 規(guī)則的事情,同時(shí)讓熱修復(fù)只用于修復(fù) bug,而不是試圖改變整個(gè) APP 的功能。
平臺(tái)升級(jí)后,接入平臺(tái)的 APP 不會(huì)再有任何安全隱患,同時(shí)也可以強(qiáng)制禁止濫用。
鑒于 React Native / weex / 小程序 等動(dòng)態(tài)化方案仍被允許,相信蘋果并不拒絕動(dòng)態(tài)方案,只是無法接受平臺(tái)上有任何安全隱患和繞過審核調(diào)私有 API 侵犯用戶隱私的行為,平臺(tái)升級(jí)后可以幫助蘋果解決這些問題,甚至如果蘋果愿意,我們可以開放后臺(tái)讓蘋果主導(dǎo)審核程序。
建議平臺(tái)用戶在 APP 下個(gè)版本去掉原有的 JSPatch SDK,在平臺(tái)升級(jí)后再接入新的 SDK,升級(jí)完成后我們會(huì)通知大家。
熱修復(fù)可以顯著提升 APP 的開發(fā)效率和質(zhì)量,有龐大的需求量,希望可以共建良好的熱修復(fù)環(huán)境。
原文- bang JSPatch 平臺(tái)關(guān)于蘋果警告的解決方案