📅  最后修改于: 2020-11-02 05:14:25             🧑  作者: Mango
根据WebAssembly.org的官方网站(网址为https://webassembly.org/docs/security/),WebAssembly在安全性方面的主要目标如下-
WebAssembly的安全模型有两个重要目标-
保护用户免受错误或恶意模块的侵害,以及
在(1)的约束内,为开发人员提供有用的原语和缓解措施,以开发安全的应用程序。
编译后的代码(即来自C / C++ / Rust的WASM)不会直接在浏览器内部执行,而是使用Javascript API。 WASM代码被沙箱化,即通过Javascript API包装器执行,浏览器使用API与WASM对话。
这是在浏览器中使用.wasm文件的示例。
示例-C程序
#include
int square(int n) {
return n*n;
}
我们将使用WASM Explorer来获取wasm代码-
下载WASM代码并使用它来测试api。
您将获得以下输出-
导出对象具有对要调用的函数的引用。要调用函数square,您必须执行以下操作:
console.log(finalcode.instance.exports.square(25));
以下是WASM编译代码的问题-
将代码编译为wasm时,很难检查是否插入了恶意代码。目前没有可用的工具来验证代码。
Wasm难以分析,并且错误/恶意代码可以在浏览器中轻松执行。