起因
由于 jsbundle 文件能被轻松地查看到源码,可以使用 rn-debundle 查看。
这对于代码的安全来说是非常致命的,所以我们需要对该文件进行加密,使用 AES 128 进行加密,解密也很快。
方案
- 修改源码
RCTJavaScriptLoader.mm
+ (void)loadBundleAtURL:(NSURL *)scriptURL
onProgress:(RCTSourceLoadProgressBlock)onProgress
onComplete:(RCTSourceLoadBlock)onComplete {
/**
从该段代码可知,先同步加载,若失败再异步加载。只需对 NSData 进行解密即可
根据 scriptURL 解析路径,比如为 .../main.jsbundle?e=pwd,可知需要解密并且密钥是'pwd',可以自行定义规则
*/
}
- 对
jsbundle文件进行 AES 128 加密 - 这样加载时,如果需要解密,则拿到密钥进行解密。解密方法参考