首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js沙箱

沙箱主要是一种安全机制,把一些不信任的代码运行在沙箱之内,不能访问沙箱之外的代码。比如在线编辑器、执行第三方js、vue服务端渲染等,只要是运行不信任的程序,沙箱隔离就会使用到。...常见的eval和new Function可以提供一个运行外部代码的环境,但是没有解决访问全局的问题,配合with用法可以稍微限制,先从当前的with提供的查找,但是查找不到还是能从上获取: function...而es6的proxy则可以解决这个问题,proxy可以设置访问拦截器,于是with再加上proxy几乎完美解决js沙箱机制。...这是目前js沙箱能做到的最好的沙箱机制了,很多会再加上iframe去做更多的限制,因为H5提出了iframe的sandbox属性,限制了更多,也可以进行配置解决这些限制。当然,想要绕过方法还是有的。...这边想提一嘴,微前端概念其实就是用js创造一个类似iframe的沙箱,解决隔离问题,分别运行各个项目。所以现在沙箱使用也不一定都是安全机制,也会因为功能需求使用。常见的有快照沙箱和proxy沙箱

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

说说JS中的沙箱

沙箱设计的目的是为了让不可信的代码运行在一定的环境中,从而限制这些代码访问隔离区之外的资源。 JS沙箱的使用场景 前端JS中也会有应用到沙箱的时候,毕竟有时候你要获取到的是第三方的JS文件或数据?...当你有必要执行第三方js的时候,而这份js文件又不一定可信的时候; 3、在线代码编辑器:相信大家都有使用过一些在线代码编辑器,而这些代码的执行,基本都会放置在沙箱中,防止对页面本身造成影响;                                      ...总而言之:当你要解析或执行不可信的JS的时候,当你要隔离被执行代码的执行环境的时候,当你要对执行代码中可访问对象进行限制的时候,沙箱就派上用场了。...不能加载额外插件比如flash等 不过别方,你可以对这个iframe标签进行一些配置: 接下你只需要结合postMessage API,将你需要执行的代码,和需要暴露的数据传递过去,然后和你的iframe...JS,如有必要执行第三方JS,可通过设置CSP维护白名单的方式; 2、不要信任任何用户数据源,防止恶意用户注入代码

2.5K30

小程序沙箱技术,将恶意代码锁到“笼子”

时间快进到2022年,很多企业的业务软件可能只有低至10%的代码是自己的工程师写的,其他的都来源于不知名的开源世界,开发者自己都不知道,供应链被污染了,影响到自己,也殃及其他“租户”。...你想用JavaScript+Node.js开发一个只能对网络请求返回“Hello,World”回复的微服务,你决定采用一个最轻量简约的微服务框架ExpressJS - 一动手的瞬间,你的开发工具npm就给你从上游拉取...小程序安全沙箱类技术的盛行先说说App插件生态。...再说说小程序安全沙箱技术。如果将小程序和移动设备插件比喻成“点”,那么小程序安全沙箱技术(例如:FinClip)就是能够让一个个点组装成App的“线”。...运行在这个封闭环境中的进程,其代码不受信任,进程不能因为其自身的稳定性导致沙箱的崩溃从而影响宿主系统,进程也无法突破沙箱的安全管控以读写宿主系统的资源。

30940

你不知道的JS 沙箱隔离

在现实与 JavaScript 相关的场景中,我们知道平时使用的浏览器就是一个沙箱,运行在浏览器中的 JavaScript 代码无法直接访问文件系统、显示器或其他任何硬件。...另外一种值得借鉴的思路是阿里云开发平台的 Browser VM,其核心入口逻辑在 Context.js 文件中。...但其最大的亮点还是借助 iframe 做了一些取巧的实现,当这个为每个子应用创建的 iframe 被移除时,写在其下 window 上的变量和 setTimeout、全局事件监听等也会一并被移除;另外基于...操作、生命周期 Mock 接口等相关代码,而接受渲染事件通信的入口文件在 page 目录下,该入口文件接受 node 操作事件后再结合 WorkerDomNodeImpl.js 中的接口代码实现了 DOM...、document 全局方法的并代理到主线程的方式实现了部分的 JavaScript 沙箱隔离(暂时没看到路由隔离的相关代码实现)。

1.9K40

微前端01 : 乾坤的Js隔离机制(快照沙箱、两种代理沙箱

下文会分三部分来进行讲解: 乾坤Js隔离机制的发展史; 编码实现三种Js隔离机制的核心逻辑,并分析各自的优劣; 分析乾坤的三种Js隔离机制的源代码,并深入细节进行解析; 1、乾坤Js隔离机制的发展史...我们把Js隔离机制常常称作沙箱,事实上,乾坤有三种Js隔离机制,并且在源代码中也是以 SnapshotSandbox、LegacySandbox、ProxySandbox三个类名来指代三种不同的隔离机制...下文我们统一以快照沙箱、支持单应用的代理沙箱、支持多应用的代理沙箱,来代表这三种不同的Js隔离机制。那么问题来了,隔离就隔离,怎么有这么多沙箱?...在沙箱失活的时候: 记录window上有哪些状态发生了变化(沙箱自激活开始,到失活的这段时间); 清除沙箱在激活之后在window上改变的状态,从代码可以看出,就是让window此时的属性状态和刚激活时候的...其实到了这里,如果读者朋友已经理解了上面的思路,就可以说已经理解了乾坤的Js隔离机制。下面我们来看看乾坤的源码具体是怎么实现的这三个沙箱机制。

2K20

微前端03 : 乾坤的沙箱容器分析(Js沙箱机制建立后的具体应用)

“在微前端01 : 乾坤的Js隔离机制(快照沙箱、两种代理沙箱)中,我们知道了乾坤的沙箱的核心原理和具体实现。...” 沙箱容器的主逻辑 对沙箱机制的具体应用,本质上就是对沙箱容器的控制,至于什么是沙箱容器,我们直接看代码: // 代码片段一,所属文件:src/sandbox/index.ts /** * @param...关于沙箱实例,我们先看创建沙箱实例的时候传入了globalContext,还记得我们在微前端01 : 乾坤的Js隔离机制(快照沙箱、两种代理沙箱)中各沙箱的极简版吧,当时我直接用的window,那为什么在真实源码中要通过传入...如果忽略省略的代码片段注释处省略的代码,那mount、unmount仅仅是调用sandbox.active、sandbox.inactive两个方法让沙箱激活或者失活。...proxy实际上就是在上文代码片段一中创建的沙箱实例,对应代码片段一中的sandbox变量。

75220

谈谈微前端领域的js沙箱实现机制

传统的js沙箱主要用于执行一些不可信任的js脚本,其对沙箱的包装只需要一个可执行的js环境即可,一般会屏蔽对location document等重要全局对象的访问,同时一般为一次性执行,执行完第三方脚本后会释放沙箱环境...主流实现方案 一个js沙箱是一个独立的执行上下文或者叫作用域,我们把代码传入后,其执行不会影响到其他的沙盒环境。所以实现沙盒的第一步就是创建一个作用域。这个作用域不会包含全局的属性对象。...// window.abc 为 undefined 上面的实现newSandBoxWindow就是一个带有隔离运行环境的全局上下文,我们的微应用js代码就可以在这个上下文中运行,做到不污染全局环境的目的...当这个 iframe 被移除时,写在 newSandBoxWindow 的变量和设置的一些 timeout 时间也会一并被移除。(当然 DOM 事件需要沙箱记录,然后在宿主中移除)。...由于js的灵活性,在微前端的沙盒里通过原型链等方式是可以拿到全局window变量的内容的。这个时候我们就还需要配合一定的规范来做代码隔离,而不仅仅是依靠沙箱环境。 ? 近期热文 ?

5.7K72

安全沙箱怎样在企业数字化发挥作用

在云端,亚马逊之所以能允许成千上万的“租户”把代码跑在自己的机房里而不用担心安全问题,其中至少有相当一部分原因是跟虚拟机相关的 - 虚拟机就是隔离环境,你的代码只能在这个隔离环境跑,内存、CPU、网络...应用代码可以被丢到这个区域运行,即使它是病毒、木马、DDoS攻击软件,它也只能在这么一个资源受限的模拟世界折腾,它就像在Matrix的人,看不到宿主其他的平行世界,甚至不知道宿主的存在,无法滥用宿主资源从而毁灭宿主...所以你的代码我只能放在沙箱跑,我投放到你那边的代码,也用沙箱隔离着你的环境在所谓企业“内网”,运行的一切软件,也不能保证安全,谁知道代码里面用了什么开源组件、供应链是不是已经被污染、是否随着员工随身设备...都得被安全沙箱关着才能运行企业的一切业务内容,表现方式就是软件化代码化。...“隔离在安全沙箱”,将是数字化时代的“新常态”。

46840

python的代码写在哪里,怎么样运行python代码

1. python的代码写在哪里 你有两种方式写python代码,他们针对不同的应用场景 在python交互式解释器代码 在编辑器代码 在python交互式解释器,你可以写简单的代码,尽管复杂的代码你也可以写...我们写一些简单的代码,有时仅仅是为了验证一些想法,想立即知道是否可行,或者是在初学阶段,希望快速的验证自己所学习的知识,都可以在python交互式解释器编写和执行代码。...在编辑器代码,推荐使用pycharm,你喜欢其他的编辑器也可以自由选择,但本教程以pycharm为主。...在编辑器代码,需要创建以.py结尾的文件,所写的代码都保存在文件中,每个文件都是一个模块。使用编辑器的好处在于编辑器都有代码提示功能,而且你写的代码都会保存下来,这些可都是你的财富。...如何执行python代码 如果是在交互式解释器代码代码是立即执行的,谈不上执行python代码,只有在编辑器代码保存在一个python脚本(以.py结尾的文件)中,才会有所谓的执行python

8K10

小程序沙箱技术如何防范恶意代码

从云端到浏览器端,都有一种机制,这种机制就是:安全沙箱。安全沙箱属于浏览器架构层面的安全防护,有了安全沙箱的存在,可以尽可能降低攻击带来的伤害程度。...一种企业灵活再开发和使用的沙箱技术小程序化”、“安全沙箱化”被认为是其中一个基石。逻辑如下:企业的一切业务内容,表现方式就是软件化代码化。...传统企业之间的资源交换与整合,它的数字化形态就是交换自己的“数字内容资产”,也就是我的平台让你的软件放进来跑一跑服务我的客户,我的软件投放到你的环境触达一下你的客户。...所以你的代码我只能放在沙箱跑,我投放到你那边的代码,也用沙箱隔离着你的环境用户甚至不再需要去主动意识到“软件”这个概念的强存在,代码都是自动下载、看到就用到的,不再有传统观念下的安装、升级,一切都是透明的类似于...FinClip小程序容器技术,是一种云端可控的设备端(包括IoT)安全沙箱技术,它以可分发、可流通的小程序代码格式为软件形态,充当下一代企业应用软件的技术底座。

42530

前端技术探索 - 你不知道的JS 沙箱隔离

在现实与 JavaScript 相关的场景中,我们知道平时使用的浏览器就是一个沙箱,运行在浏览器中的 JavaScript 代码无法直接访问文件系统、显示器或其他任何硬件。...另外一种值得借鉴的思路是阿里云开发平台的 Browser VM,其核心入口逻辑在 Context.js 文件中。...但其最大的亮点还是借助 iframe 做了一些取巧的实现,当这个为每个子应用创建的 iframe 被移除时,写在其下 window 上的变量和 setTimeout、全局事件监听等也会一并被移除;另外基于...操作、生命周期 Mock 接口等相关代码,而接受渲染事件通信的入口文件在 page 目录下,该入口文件接受 node 操作事件后再结合 WorkerDomNodeImpl.js 中的接口代码实现了 DOM...、document 全局方法的并代理到主线程的方式实现了部分的 JavaScript 沙箱隔离(暂时没看到路由隔离的相关代码实现)。

1.6K30

Smarty模板引擎多沙箱逃逸PHP代码注入漏洞

发现的漏洞影响 Smarty 模板引擎 <= 3.1.38: 1.template_object沙箱逃逸PHP代码注入 此漏洞针对暴露和实例化的Smarty实例,并通过使用未记录的沙盒强化功能得到部分缓解...Smarty_Internal_Runtime_TplFunction Sandbox Escape PHP 代码注入 此漏洞以编译引擎为目标,在 3.1.38 及以下版本中未得到缓解(即使是使用未记录功能的硬化沙箱...细绳 使用string:资源时,代码将首先将模板写入磁盘,然后将其包含在Smarty_Template_Compiled类中。 易受攻击的例子 此处介绍的概念证明可能针对不同的沙箱配置。...已创建超越默认沙箱的强化沙箱页面,以启用 Smarty 可以提供的最安全配置: <?...仍然可以绕过这个环境,因为我们可以访问Smarty实例并使用它来禁用沙箱并直接渲染我们的 php 代码。 概念证明 http://localhost:8000/page.php?

1.9K30
领券