當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JSPatch 尝试
生活随笔
收集整理的這篇文章主要介紹了
JSPatch 尝试
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
JSPatch 原理
JSPatch 能做到通過 JS 調用和改寫 OC 方法最根本的原因是 Objective-C 是動態語言,OC 上所有方法的調用/類的生成都通過 Objective-C Runtime 在運行時進行,我們可以通過類名/方法名反射得到相應的類和方法
JSPatch 安全
JSPatch 存在兩個安全方面的問題
傳輸安全
1. 對稱加密
2. HTTPS
3. RSA 校驗
RSA校驗
服務端計算出腳本文件的 MD5 值,作為這個文件的數字簽名。 服務端通過私鑰加密第 1 步算出的 MD5 值,得到一個加密后的 MD5 值。 把腳本文件和加密后的 MD5 值一起下發給客戶端。 客戶端拿到加密后的 MD5 值,通過保存在客戶端的公鑰解密。 客戶端計算腳本文件的 MD5 值。 對比第 4/5 步的兩個 MD5 值(分別是客戶端和服務端計算出來的 MD5 值),若相等則通過校驗。執行安全
- 回退
- 后臺可以提供一個指令讓APP不執行JSPatch 的方法
- 測試充分
JSPatch 熱更新方案
假設后臺版本對應補丁是這樣子的
| 1.0.0 | 0.1 |
| 0.2 | |
| 0.3 | |
| 0.4 | |
| 0.5 |
請求體
Request: {appVersion:1.0.0,bundleVersion:0.3,... }簡單一點方法就是將所有的patch下發
Response: [...{patchVersion:0.1,patchUrl:<Url>.0.1,fileMD5:<>, //js文件通過計算出腳本的MD5值,通過RSA加密...},{patchVersion:0.2,patchUrl:<Url>.0.2,fileMD5:<>,...},{patchVersion:0.3,patchUrl:<Url>.0.3,fileMD5:<>,...},,{patchVersion:0.4,patchUrl:<Url>.0.4,fileMD5:<>,...},,{patchVersion:0.5,patchUrl:<Url>.0.5,fileMD5:<>,...}, ]發送到前端.然后前端根據本來保存的最后patchVersion的版本.進行選擇性的添加.
其實覺得還是后臺直接下發缺失的部分比較好.
Response: [...{patchVersion:0.4,patchUrl:<Url>.0.4,fileMD5:<>,...},,{patchVersion:0.5,patchUrl:<Url>.0.5,fileMD5:<>,...}, ]最后下載下來的文件,我們通過計算出它的MD5值,我們在通過RSA公鑰解密,然后跟下發的MD5進行比對.如果正確,說明沒有問題.
不正確,就可能被篡改了,選擇重新請求,或者其他方案
總結
以上是生活随笔為你收集整理的JSPatch 尝试的全部內容,希望文章能夠幫你解決所遇到的問題。