使用Deno,您可以在服务器上执行 WASM。为了用户的安全,WASM 被沙盒化。据我了解,WASM 代码无法执行 HTTP 请求或修改 DOM。
服务器端是否也有安全保障?我希望使用pyodide从服务器上的用户输入运行任意 Python 代码,但担心我错过了一些重要的安全漏洞。
使用 Deno,您可以在服务器上运行 WebAssembly 模块,因为 Deno wasi 模块提供了WASI的实现,即 WebAssembly 系统接口。使用 Deno 只是在服务器上运行 wasm 模块的一种方式。您可以在 WASI 的许多其他实现之间进行选择,例如Node.js 中的 wasi 模块、wasmtime、lucet、wasmer等。
在浏览器之外[运行] 的代码需要一种与系统对话的方式——系统接口。
至于您的安全问题,请记住您的 WebAssembly 代码在沙盒环境中运行。直接执行 wasm 模块中的代码的不是您的主机系统。运行它的是实现 WASI 接口的 wasm 运行时。据我所知,您的代码产生副作用(例如执行 HTTP 调用、访问文件)的唯一方法是通过 WASI 定义的适当 API。