在做前端安全相关需求时,WASM这个问题绕不开,刚好把踩坑经验分享一下。
Have questions? Feel free to ask in the comments section below.
正文
保护在浏览器中运行的程序的传统方法是1)用Javascript编写程序, 2)使用Javascript混淆器对其进行混淆:
另一种策略是1)用C编写程序, 2)使用C-2-C混淆器(如Tigress )对其进行混淆,以及3)使用
如您所见, emscripten实际上生成了3个文件,即实际的webassembly、javascript库以及加载到浏览器中的html文件。以下是如何首先混淆C程序的示例
tigress的参数,该参数指定WebAssembly编译器(
) ,而不是本机C编译器:
EMSDKPATH = PATH_TO_EMSDK_INSTALLATION/emsdk/upstream/include/c + +/v1
--Transform = Flatten --Functions = fib\ -s ALLOW_MEMORY_GROWTH = 1\
更多内容
除了上面提到的内容,还有几个点值得注意。首先是浏览器的兼容性,不同浏览器对Web Crypto API的支持程度有所不同。其次是性能问题,加密操作在大量数据时可能会影响用户体验。最后是密钥管理,如何安全地存储和传输密钥也是一个需要考虑的问题。
本文首发于JSVMP博客,转载注明出处。后续会持续更新更多相关内容。
Reference: WASM
Comments | NOTHING