[英]How to use CSPs on iFrames
我正在使用iFrame包含外部html源https://good.com/main.html
<iframe src=“https://good.com/main.html" scrolling="no" style="overflow: hidden; height: 700px;"></iframe>
但是good.com/main.html
导入并执行以下javascript
https://good.com/a.js
https://good.com/b.js
https://bad.com/c.js
有没有办法防止good.com/main.html
导入和执行bad.com/c.js
? 更具体地说,是否阻止与https://good.com
具有不同域的资源?
我尝试将iFrame 沙盒化
<iframe sandbox=“allow-same-origin allow-scripts” src=“https://good.com/main.html” scrolling="no" style="overflow: hidden; height: 700px;"></iframe>
但是它仍然会导入并执行https://bad.com/c.js
有没有一种方法可以防止源代码导入和执行任何外部js?
从广义上讲,您不能。 iframe拥有自己的CSP,您无法通过父页面传递策略。
也就是说,您在问题中链接到的iframe元素的“ csp”属性在某种程度上允许这样做。 它允许您请求 iframe源应用在“ csp”属性中设置的CSP。 但您不能执行它,只能问一下。 因此,您可以从理论上做到:
<iframe csp="default-src 'none';" ...>
iframe的源可能会或可能不会实现您请求的CSP。
请注意,这是全新的,并且(据报道)仅在Chrome和Opera中受支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.