我有一个用户提交的不受信任的代码,我需要在浏览器的沙盒环境中执行它。
我被告知网络工作者不能保证足够安全,并且应该更好地使用沙坑iframe。本页:
https://www.owasp.org/index.php/HTML5_Security_Cheat_Sheet#Web_Workers
还说工人不适合不受信任的代码。
但是如果我从Blob创建一个worker,它的url甚至有一个不同的协议(blob://
)。在这种情况下,是否将单独的原始策略应用于工作程序代码?
如果还有其他原因,为什么工作人员(默认情况下)与沙盒iframe(访问IndexedDB或其他东西)相比受限制较少,是否有机会以某种方式设置工作人员以使其受到足够的限制,或者我还应该使用沙盒iframe吗?
答案 0 :(得分:4)
在这种情况下,是否将单独的原始政策应用于工人代码?
不,来自the current editor's draft of the File API specification:
Blob URL的来源必须与现有设置对象在创建它的方法(URL.createObjectURL或URL.createFor - )被调用时指定的有效脚本源相同。
其他原因,为什么工作人员(默认情况下)与沙盒iframe相比受限制较少
沙盒iframe可以指定除跨源通信之外的其他内容的某些权限。例如,您可以阻止沙盒内容打开弹出窗口。虽然网络工作者目前没有API来完成许多这些事情。
是否有机会以某种方式设置工作人员以使其受到足够的限制
Web工作者没有任何安全机制。 Web平台中还有其他工具用于隔离不受信任的代码,如您指出的沙盒iframe。你可以让一个沙盒iframe创建一个web worker,如果还好的话。