我在我的网络应用程序上有一个iframe,我想要沙箱以防止打开弹出窗口等等。但是我也想因为某些原因允许同源。因此,我想要应用的沙箱属性是:allow-scripts allow-forms allow-same-origin
。 ifame与其父母的来源相同。
现在,如果我使用iframe的sandbox属性应用沙箱,我知道可以通过访问父级DOM从iframe中删除sandbox属性来绕过它。
但是如果我使用sandbox
CSP指令应用沙箱会怎样。我使用HTTP标头提供CSP。可以绕过吗?
答案 0 :(得分:0)
简短的回答是“是”,可以绕过,但这取决于你的确切做法:
如果使用“沙盒”指令以及“allow-scripts”'allow-forms'和'allow-same-origin'将带有CSP标头的带框页面提供给iframe,则不会帮你。当然,框架页面不能更改DOM以删除限制,但底线是框架页面可以完全访问父窗口的DOM。基本上,如果您执行'allow-scripts'和'allow-same-origin',那么对运行的javascript没有任何限制。
但是,如果您另外小心地设置script-src和object-src(或default-src),那么您可以将执行的脚本限制为有限的集合。这样您就可以确保只运行您的javascript代码,并且可以确保所述代码不会执行您不想要的任何操作。唯一需要注意的是,你必须非常小心地设置script-src和object-src,因为在某些情况下,即使是服务器上的无辜文件也可以用于CSP旁路。