iframe - 来自 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
解决方案
推荐阅读
- java - 在 Java 中模拟链表
- reactjs - 对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态 - React 问题
- python - 找出任何两个集合是否具有相同的成员资格
- git - git push 不删除已删除的文件
- python - 使用 if else 语句编写列表理解
- ios - 有谁知道如何修复线程 1:信号 SIGABRT 错误?我已经尝试过清洁我的产品。我是 iOS 开发新手
- java - Logback 创建日志文件但不向其中写入任何内容
- java - 循环内的 ArrayList
- list - 从列表创建无限流
- vue.js - 在 Vue JS 中,从 mount() 分配数据