【问题标题】:Can workers be secure enough for an untrusted code对于不受信任的代码,工作人员是否足够安全
【发布时间】:2014-09-21 21:24:19
【问题描述】:

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

我被告知 Web-Workers 不够安全,最好使用沙盒 iframe。本页:

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

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

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

如果还有其他原因,为什么工人(默认情况下)与沙盒 iframe(访问 IndexedDB 或其他东西)相比受到较少限制,是否有机会以某种方式设置工人,使其受到足够的限制,还是我仍然应该使用沙盒 iframe?

【问题讨论】:

    标签: javascript security iframe sandbox


    【解决方案1】:

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

    不,来自the current editor's draft of the File API specification

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


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

    沙盒 iframe 可以指定一些权限,而不是跨域通信。例如,您可以阻止沙盒内容打开弹出窗口。虽然网络工作者目前没有 API 来做很多这些事情。


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

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

    【讨论】:

    • 自从提出并回答了这个问题以来,WebAssembly 已经成为沙箱第三方代码的可行选项。它无权访问任何浏览器的 API。尽管这会在某些时候发生变化,使 wasm 成为浏览器的一等公民,但为了向后兼容,沙盒选项可能会保留。
    猜你喜欢
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2011-08-23
    • 2013-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多