首页 > 解决方案 > 来自 serviceworker 的 CSP 沙箱

问题描述

我正在从服务人员的 iframe 中提供本地生成的不受信任的内容。

我正在尝试完全锁定 iframe,以便它只能从其 srcdoc 加载资源,该资源会被 serviceworker 拦截。这意味着没有来自任何其他域的 img 等,但允许使用 javascript。

为了实现这一点,我添加了 CSP:sandbox allow-scripts; default-src 'self' 数据:;script-src 'self' 'unsafe-inline'; 在服务工作者提供的所有资产上,包括 iframe 根。

加载 iframe 根文档工作正常。但是在 iframe 中使用相对 url 加载图像,因此来自同一个来源,不会影响服务工作者 - 而是通过父域并因此得到 404。如果我从 CSP 中删除沙箱属性,那么图像负载,但我失去了安全性。

有没有办法让它工作?我在这里有一个演示:https ://ianopolous.github.io/sandbox

我在这里在服务工作者中应用 CSP 标头: https ://github.com/ianopolous/sandbox/blob/gh-pages/sw.js#L119

标签: iframehttp-headersservice-workersandboxcontent-security-policy

解决方案


推荐阅读