我正在尝试弄清楚是否可以通过编程方式更改iFrame的沙盒值。
来自MDN iframe:
当嵌入的文档与主页面具有相同的来源时,强烈不建议同时使用allow-scripts和allow-same-origin,因为这允许嵌入的文档以编程方式删除沙盒属性。虽然它被接受,但这种情况不比不使用沙盒属性更安全。
然而,在父级中更改属性并不能成功地触发沙盒化,因为那将意味着在子级中进行。
document.getElementById('myFrame').setAttribute('sandbox', 'allow-scripts');
如果启用沙箱,则加载在 iFrame 中的页面无法成功访问父级。但由于该属性未能阻止对父级的访问,因此安全性存在缺陷,需要加强。
console.log(window.parent.document);
上述仍适用于启用了“编程方式”沙箱的iFrame。这在Chrome和Firefox中都是如此,这可能意味着有意未记录的功能或规范实现不佳。
是否有人对适当的期望有任何想法?