Javascript 对于不受信任的代码,工人是否足够安全

Javascript 对于不受信任的代码,工人是否足够安全,javascript,security,iframe,sandbox,Javascript,Security,Iframe,Sandbox,我有一个用户提交的不可信代码,我需要在浏览器的沙盒环境中执行它 我被告知,Web工作人员的安全性还不够,最好使用沙盒iframe。本页: 他还说,工人不适合使用不可信的代码 但是如果我从一个Blob创建一个worker,它的url甚至有一个不同的协议(Blob://)。在这种情况下,是否对工人代码应用了单独的原产地策略 如果还有其他原因,为什么与沙盒iframe(根据IndexedDB或其他内容)相比,worker(默认情况下)受到的限制更少,是否有机会以某种方式设置worker以使其受到足够

我有一个用户提交的不可信代码,我需要在浏览器的沙盒环境中执行它

我被告知,Web工作人员的安全性还不够,最好使用沙盒iframe。本页:

他还说,工人不适合使用不可信的代码

但是如果我从一个Blob创建一个worker,它的url甚至有一个不同的协议(
Blob://
)。在这种情况下,是否对工人代码应用了单独的原产地策略

如果还有其他原因,为什么与沙盒iframe(根据IndexedDB或其他内容)相比,worker(默认情况下)受到的限制更少,是否有机会以某种方式设置worker以使其受到足够的限制,或者我仍然应该使用沙盒iframe

在这种情况下,是否对工人代码应用了单独的原产地策略

不,来自:

Blob URL的来源必须与创建它的方法(URL.createObjectURL或URL.createFor)被调用时由现有设置对象指定的有效脚本来源相同


其他原因,为什么辅助进程(默认情况下)比沙盒iframe限制更少

沙盒iFrame可以在跨源通信之外的其他方面指定一些权限。例如,可以防止沙盒内容打开弹出窗口。尽管网络工作者目前没有API来完成这些事情


是否有机会以某种方式安排一名工人,使其受到足够的限制


网络工作者没有任何安全机制。web平台中还有其他用于隔离不可信代码的工具,如您所指出的沙盒iframe。如果更好的话,您可以使用沙盒iframe创建一个web worker。

自从这个问题被提出和回答以来,WebAssembly已经成为沙盒第三方代码的一个可行选项。它无法访问浏览器的任何API。尽管这一点在某些时候会改变,使wasm成为浏览器的一等公民,但为了向后兼容,沙盒选项可能会保留下来。