📜  WebAssembly-安全性

📅  最后修改于: 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 Explorer

下载WASM代码并使用它来测试api。


输出

您将获得以下输出-

导出对象

导出对象具有对要调用的函数的引用。要调用函数square,您必须执行以下操作:

console.log(finalcode.instance.exports.square(25));

WASM编译代码的问题

以下是WASM编译代码的问题-

  • 将代码编译为wasm时,很难检查是否插入了恶意代码。目前没有可用的工具来验证代码。

  • Wasm难以分析,并且错误/恶意代码可以在浏览器中轻松执行。