如何保证离线包内容的安全性

为了保证离线包的安全,开发者可以开启离线包验签功能。验签的基本过程如下:

  1. 开发者配置好一对公私钥,私钥放在服务端用于对离线包进行签名,公钥放在客户端,用于对签名对验证。

  2. 在离线包发布平台,如果配置了签名私钥,平台下发的 amr 文件就会带上签名信息(通过私钥对离线包的 hash 值加密后得到的密文)。

  3. 客户端在拿到 amr 包并解压后,客户端会使用在项目中预置的公钥进行签名的验证(解密上一步的密文得到一个 hash 值,同时本地计算离线包的 hash 值,判断两者是否相同),如果相同则通过验证。

    离线包安全性验签的过程既保证了离线包的内容完整,也保证了离线包的来源正确。

注意

虽然离线包验签过程可以保证离线包在传输和加载过程中不被篡改,但因为客户端的控制权完整掌握在用户手中,该机制并不能完全阻止在客户端上的恶意破解和篡改 H5 逻辑的行为。因此,开发者必须时刻注意前端上存在的各种潜在的安全风险。例如,权限控制一定需要后端验证、“秒杀、抢购”等行为一定需要后端配合进行时间戳验证等。