安全问题
传输安全
JSPatch脚本的执行权限很高,若在传输过程中被中间人篡改,会带来很大的安全问题,为了防止这种情况出现,我们在传输过程中对JS文件进行了RSA签名加密,流程如下:
服务端:
- 计算 JS 文件 MD5 值。
- 用 RSA 私钥对 MD5 值进行加密,与JS文件一起下发给客户端。
客户端:
- 拿到加密数据,用 RSA 公钥解密出 MD5 值。
- 本地计算返回的 JS 文件 MD5 值。
- 对比上述的两个 MD5 值,若相等则校验通过,取 JS 文件保存到本地。
由于 RSA 是非对称加密,在没有私钥的情况下第三方无法加密对应的 MD5 值,也就无法伪造 JS 文件,杜绝了 JS 文件在传输过程被篡改的可能。
本地存储
本地存储的脚本被篡改的机会小很多,只在越狱机器上有点风险,对此 JSPatch SDK 在下载完脚本保存到本地时也进行了简单的对称加密,每次读取时解密。