跳到主要内容

js沙箱环境

沙箱(sandbox)是一个安全机制,用于隔离运行代码,以防止代码对其它部分的应用程序或系统造成不必要的影响或安全风险。沙箱提供了一个受控环境,在这个环境中,代码可以被执行而不影响外部环境,从而保护用户数据和系统安全

js沙箱的使用场景​

沙箱通常用于隔离和控制代码执行的环境,以确保代码运行在一个安全的、受限制的环境中,避免对主环境造成潜在的损害

  • 执行第三方js脚本/插件
    • 当你有必要执行第三方 js 的时候,而这份 js 文件又不一定可信的时候;
    • 通过沙箱可以限制这些脚本的访问权限,保护主应用的安全和数据
  • 代码编辑器
    • 相信大家都有使用过一些在线代码编辑器,而这些代码的执行,基本都会放置在沙箱中,防止对页面本身造成影响
  • 应用安全
    • 运行来自不同来源的 JavaScript 代码时,沙箱可以限制这些代码的权限,防止恶意代码访问敏感资源或执行危险操作

js实现沙箱​

iframe 实现沙箱​

允许你在当前页面内嵌套一个完全独立的 HTML 页面。这种方法可以有效隔离 JavaScript 执行环境,防止脚本访问主页面的 DOM 或 JavaScript 环境,从而提高安全性

js
<iframe src="sandbox.html" sandbox="allow-scripts" id="sandbox"></iframe>

Web Workers 实现沙箱​

js
function workerSandbox(appCode) {
var blob = new Blob([appCode]);
var appWorker = new Worker(window.URL.createObjectURL(blob));
}

workerSandbox("const a = 1;console.log(a);"); // 输出1

console.log(a); // a not defined