Skip to content

多功能 JavaScript 沙盒实现,以满足不同场景下的代码隔离需求。当前主要支持 ECMAScript 模块 (ESM) 的安全隔离。Versatile JavaScript sandbox implementations, currently focused on secure ECMAScript Modules (ESM) isolation.

Notifications You must be signed in to change notification settings

heiheihoho1213/monto-js-sandbox

Repository files navigation

logo

monto-js-sandbox 沙箱(JavaScript Sandbox)

Sandbox Type 安全级别 兼容性 License 交流 npm license

本项目为 JS 沙箱解决方案,适用于多种前端隔离与安全场景。

项目简介

本仓库致力于实现多种 JavaScript 沙箱技术,涵盖 iframe、 Proxy、快照、WebComponent、QuickJS+WASM 等多种隔离与安全执行方案,适用于插件系统、在线编辑器、第三方代码加载、多租户应用等场景。

使用场景

  • 网页中安全加载第三方代码
  • 插件与扩展开发,限制其访问范围
  • 多租户应用中的代码隔离
  • 测试与调试环境的安全执行
  • 代码评审与沙箱运行

功能特性

  • 多种沙箱实现(iframe、Proxy、快照、WebComponent、QuickJS+WASM)
  • 支持全局变量隔离与恢复
  • 支持 DOM/CSS 层级隔离
  • 支持静态代码安全分析
  • 高安全级别的 WASM 虚拟机隔离

快速开始(Get Started)

更多例子,参见 example

安装

npm install monto-js-sandbox

以下是一个基于 proxy 的简单沙箱实现示例,可用于安全地加载和执行第三方 JavaScript 代码:

import { ProxySandbox } from 'monto-js-sandbox';

const sb = new ProxySandbox({
  rootElm: globalThis
});
const a = 333;
const scriptText = 'console.log("沙盒中的a: ", a);var a = 111;';
sb.execScript(scriptText);
console.log("父容器中的a: ", a)
sb.destroy();

架构图

iframe proxy proxy proxy

开发计划

  • 多种类型沙盒
  • 单元测试补充
  • 异常捕获与详细日志
  • 多实例并发隔离支持
  • 适配微服务
  • 兼容 cjs

BUG

赞助与支持

本项目为 MIT 开源项目,感谢所有 支持者 的持续支持。如果你愿意加入赞助行列,请 联系我

如有建议或问题,欢迎提交 Issue 或 PR!

About

多功能 JavaScript 沙盒实现,以满足不同场景下的代码隔离需求。当前主要支持 ECMAScript 模块 (ESM) 的安全隔离。Versatile JavaScript sandbox implementations, currently focused on secure ECMAScript Modules (ESM) isolation.

Resources

Stars

Watchers

Forks

Packages

No packages published