【问题标题】:What are the security risks associated with WASM?与 WASM 相关的安全风险是什么?
【发布时间】:2026-01-27 17:45:02
【问题描述】:

Using Deno 你可以在服务器上执行 WASM。为了用户的安全,WASM 被沙盒化。据我了解,WASM 代码无法进行 HTTP 请求或修改 DOM。

服务器端也有安全保障吗?我希望使用pyodide 从服务器上的用户输入运行任意 Python 代码,但我担心我错过了一些重要的安全漏洞。

【问题讨论】:

  • 通过浏览器中的pyodide,您既可以修改DOM,也可以通过JS发出HTTP请求。所以我想在服务器上运行时也是如此。
  • 至于进行 HTTP 调用,我从未使用过 pyodide,但显然您可以直接从 Python 使用 XMLHttpRequest 和 Fetch Web API:*.com/a/64804258/3036129

标签: security webassembly pyodide


【解决方案1】:

使用 Deno,您可以在服务器上运行 WebAssembly 模块,因为 Deno wasi module 提供了 WebAssembly 系统接口 WASI 的实现。使用 Deno 只是在服务器上运行 wasm 模块的一种方式。您可以在许多其他 WASI 实现之间进行选择,例如 wasi module in Node.jswasmtimelucetwasmer 等。

在浏览器之外[运行]的代码需要一种与系统对话的方式 — 一个系统接口。

至于您的安全问题,请记住您的 WebAssembly 代码在 sandboxed environment 中运行。直接执行 wasm 模块中的代码的不是您的主机系统。运行它的是实现 WASI 接口的 wasm 运行时。据我所知,您的代码产生副作用(例如执行 HTTP 调用、访问文件)的唯一方法是通过 WASI 定义的适当 API。

【讨论】: