使用全局唯一标识符或srcdoc创建的iframe会强制执行哪项CSP策略?
问题
使用srcdoc/全局唯一标识符(例如data://、blob://)嵌入iframe时,如果被嵌入的HTML自身通过meta标签指定了CSP,哪项CSP会被强制执行?
解答结论
这种场景下父页面的CSP与iframe内部定义的CSP会叠加生效,所有操作需要同时满足两套规则才能执行,具体逻辑如下:
- 按照CSP规范的基础规则,
srcdoc、data://、blob://这类没有独立HTTP交付上下文的嵌入式资源,首先适用嵌入方(父页面)的CSP:父页面的CSP会先校验是否允许加载该类iframe资源,且父页面设置的所有CSP限制默认对iframe内的所有操作生效。 - 如果iframe内部的HTML通过
<meta>标签额外指定了CSP规则,只会在父页面CSP的基础上新增更严格的限制,完全不会覆盖父页面已有的规则。举个实际例子:如果父页面CSP允许加载https://a.com、https://b.com两个域名的图片,而iframe内部CSP只允许加载https://a.com的图片,那么最终iframe内只能加载https://a.com的图片,https://b.com的图片会被拦截。
注意:iframe内部的meta CSP无法放宽父页面CSP已经设置的限制,只能追加更严格的约束。
内容的提问来源于stack exchange,提问作者pepper
相关产品推荐
相关产品推荐

