離線包(無論是預置還是下載)驗簽是否一定需要網絡?
解答:不需要,離線包驗簽不依賴網絡。
驗簽的時間點在什么時候?下載后解壓的是自動驗簽還是在調用的時候才驗簽?
解答:驗簽過程在下載離線包之后,解壓離線包之前。若驗簽不通過會導致加載離線包失敗,轉而跳轉回退在線頁面。
JSAPI startapp 接口打開新的離線包時,TitleBar 變成自動透明模式?
解答:需要傳入 transparentTitle
參數控制 TitleBar 行為,可選參數包括:AUTO|YES|NO
,詳情請參考啟動 參數文檔 。
離線包驗簽的流程是什么樣的?
解答:為了保證離線包的安全性,開發者可以開啟離線包驗簽功能。該過程既保證了離線包內容的完整性,也保證了離線包來源的正確性。
首先配置私鑰和公鑰。將私鑰配置在服務端,用于對離線包的簽名;將公鑰配置在客戶端,用于對簽名的驗證。
在 mPaaS 控制臺的實時發布中下載 amr 文件。若配置了簽名私鑰,下載的 amr 文件即可攜帶簽名信息。該簽名信息為私鑰對離線包的 Hash 值加密后得到的密文。
客戶端在拿到 amr 包并解壓后,會使用在項目中預置的公鑰進行簽名的驗證。解密步驟 2 中的密文得到一個 hash 值,同時本地計算離線包的 hash 值,判斷兩者是否相同,如果相同則通過驗證。
雖然離線包驗簽過程可以保證離線包在傳輸和加載過程中不被篡改,但由于客戶端的控制權完整掌握在用戶手中,該機制并不能完全阻止在客戶端上惡意破解和篡改 H5 邏輯的行為。因此,開發者需注意在前端上存在的各種潛在的安全風險。例如,權限控制一定需要在后端驗證,秒殺、搶購等行為需要后端配合進行時間戳驗證等。
什么是移動網關?移動網關的作用是什么?
移動網關 RPC 是移動開發平臺(mPaaS)提供的連接移動客戶端與服務端的組件產品。該組件簡化了移動端與服務端的數據協議和通訊協議,能夠顯著提升開發效率和網絡通訊效率。移動網關是連接移動客戶端與服務端的橋梁,移動客戶端通過網關來訪問后臺服務接口。更多內容請參考 移動網關簡介。
通過使用移動網關可以實現以下內容:
通過動態代理的方式,封裝客戶端與服務端之間的通訊。
如果服務端與客戶端定義了一致的接口,可由服務端自動生成代碼并導出給客戶端使用。
對 RpcException 進行統一的異常處理,彈對話框、Toast 消息框等。
移動網關提供服務端 HTTP 服務簽名驗證功能,提高從網關到服務端的數據安全性。
在網關控制臺開啟某一 API 分組的簽名校驗后,移動網關會對該分組里面的每一個 API 請求創建簽名信息,簽名使用的公私鑰可在網關控制臺創建。
服務端讀取簽名字符串后,收到的請求進行本地簽名進行計算,查看與收到的簽名是否一致,以此來判斷請求是否合法。
對客戶端到移動網關的請求進行驗簽,以驗證調用者身份保證安全。網關驗證,默認打開;如需關閉請在配置文件中設置。
網關驗簽的驗簽流程是什么?
為保證客戶端請求不被篡改和偽造,RPC 請求擁有簽名機制,RPC 模塊會自動實現加簽功能。基本的加簽、驗簽過程如下:
將 requestBody 中的內容轉換為字符串。
使用無線保鏢安全模塊,通過保存在加密圖片(即無線保鏢圖片)中的加密密鑰,對轉化的字符串進行加簽。
將加密后的簽名放在請求中發給網關。
網關使用相同方式簽名,校驗兩個簽名是否相等。
離線包驗簽與網關驗簽的異同點分別是什么?
相同點:
離線包驗簽和網關驗簽的目的都是為了保證客戶端的安全,保護內容不被篡改。
離線包驗簽和網關驗簽都是對數據的校驗。
不同點:
驗證的產物不同:
離線驗簽驗證的是離線包在下載之后、解壓之前是否被修改。
網關驗簽驗證的是 requestBody 是否被修改。
簽名方式不同:
離線驗簽是由用戶通過后臺配置公鑰以及私鑰的方式簽名。
網關驗簽是通過無線保鏢獲取簽名。
驗簽失敗的結果不同:
離線包驗簽失敗不會導致 H5 頁面失效,頁面數據只能通過網絡加載,不影響正常使用。
網關驗簽失敗會導致向后臺請求的數據后臺校驗失敗或者前端獲取到的數據解密失敗時,APP 的頁面數據不能正常展示,影響正常使用。
網關驗簽時客戶端通過代碼發起 PRC 調用,但未能拿到預期結果,在控制臺產生的錯誤碼代表什么含義?
錯誤碼 | 說明 | 原因 |
7000 | 沒有設置公鑰 | 移動 APP 的無線保鏢中無 appId 對應的密鑰或網關無法獲取 appId 對應的簽名密鑰。 |
7001 | 驗簽的參數不夠 | 網關服務端驗證簽名不通過。 |
7002 | 驗簽失敗 | 網關服務端驗證簽名不通過。 |
7003 | 驗簽時效性失敗 | API 請求入參 ts 時間戳超過系統設置的時間有效性,需要檢查客戶端時間是否為系統時間。 |
7007 | 驗簽缺少 ts 參數 | API 請求缺少驗簽 ts 參數。 |
7014 | 驗簽缺少 sign 參數 | API 請求缺少驗簽 sign 參數。一般情況下是客戶端簽名數據失敗,導致缺失 sign 參數。請檢查客戶端無線保鏢圖片是否正確。 |
更多內容請參考 如何排查移動網關調用錯誤。
在離線包驗簽中有網的情況下,離線包應用可以正常打開;關閉網絡,離線包應用無法打開。該如何排查?
請參考 如何排查移動網關調用錯誤。
在離線包驗簽中 H5 應用加載緩慢,該如何排查?
請參考 如何排查移動網關調用錯誤。
RPC 請求異常,該如何排查?
如果通過 RPC 請求進行資源調用的過程中出現異常,請參考 無線保鏢結果碼說明 進行排查。