工人是否可以足够安全地使用不受信任的代码

asv*_*svd 3 javascript security iframe sandbox

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

有人告诉我,Web-Workers不能为此提供足够的安全性,因此最好使用Sandbxed iframe。这一页:

https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Web_Workers

还说工人不适合不受信任的代码。

但是,如果我从Blob创建一个worker,则其url甚至具有不同的协议(blob://)。在这种情况下,是否将单独的来源策略应用于工作者代码?

如果还有其他原因,为什么(默认情况下)为什么与沙盒iframe(访问IndexedDB等)相比,对工作人员的限制较少(是否有机会以某种方式设置工作人员,以便对其进行足够的限制,或者应该我还是要使用沙盒iframe吗?

gue*_*est 6

在这种情况下,是否将单独的来源策略应用于工作者代码?

否,来自文件API规范的当前编辑者的草稿

Blob URL的来源必须与调用它的方法URL.createObjectURL或URL.createFor时在位设置对象指定的有效脚本来源相同。


其他原因,为什么工作人员(默认情况下)与沙盒iframe相比受到的限制更少

沙盒iframe可以指定跨域通信以外的其他权限。例如,您可以防止沙盒内容打开弹出窗口。尽管网络工作者目前没有API可以做很多事情。


有没有机会以某种方式组建工人,以使其受到足够的限制

Web工作人员没有任何安全机制。Web平台中还有其他工具可以隔离不受信任的代码,例如您所指出的沙盒iframe。如果更好,您可以让一个沙盒iframe创建一个Web worker。