cod*_*dev 5 javascript safari google-chrome blob html5-video
iframe我有一个网站,它使用sandbox-Attribute 设置为来嵌入用户定义的页面allow-scripts。
嵌入式网站本身也是由我托管的(它来自同一源服务器),但它包含潜在不安全的 Javascript。我不想将allow-same-origin值添加到sandbox属性中,因为这会破坏整个目的。
嵌入页面的Content-Security-Policy标题设置如下:
Content-Security-Policy: style-src 'self' https://example.com/webjars/ https://example.com/css/ 'unsafe-inline' blob:; script-src 'self' https://example.com/webjars/ https://example.com/js/ 'unsafe-eval' 'unsafe-inline' blob:; default-src 'none'; navigate-to 'none'
Run Code Online (Sandbox Code Playgroud)
example.com我的域名在哪里。
嵌入页面尝试使用以下代码动态添加Javascript/CSS:
Content-Security-Policy: style-src 'self' https://example.com/webjars/ https://example.com/css/ 'unsafe-inline' blob:; script-src 'self' https://example.com/webjars/ https://example.com/js/ 'unsafe-eval' 'unsafe-inline' blob:; default-src 'none'; navigate-to 'none'
Run Code Online (Sandbox Code Playgroud)
这应该是允许的,并且它在 Chrome(桌面/Windows+MacOS)上运行良好。
但是,在 Chrome Mobile (iOS) 和 Safari(MacOS、iOS)上,它拒绝执行 Javascript 和 CSS。在控制台上,弹出以下消息:
[blocked] The page at https://example.com/embedded_page_url was not allowed to run insecure content from blob:null/<uuid>.
Run Code Online (Sandbox Code Playgroud)
我可以看到和containsContent-Security-Policy的值(如您在上面看到的)。script-srcstyle-srcblob:
当我URL.createObjectURL在嵌入页面中手动“禁用”时,它工作得很好(因为,正如您在上面的 js 代码中看到的那样,如果不支持URL.createObjectURL = null动态脚本/样式元素的创建,则可以后备内联代码) URL.createObjectURL。
我有什么遗漏的吗?如果该功能可用,我更愿意使用blob:URL 来嵌入此类内容,而不是总是内联动态脚本。
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |