嵌套iframe场景下frame-ancestors配置有效性技术问询
三层嵌套iframe的CSP frame-ancestors配置分析
原配置是否可行?
可行。frame-ancestors规则只检查直接嵌入当前页面的父级页面来源,而非整个祖先链:
- 中间页面的
frame-ancestors设为outer,它的直接父是外层页面,符合规则,能正常被外层嵌入; - 内层页面的
frame-ancestors设为middle,它的直接父是中间页面,符合规则,能正常被中间页面嵌入。
整个嵌套结构可以正常加载。
是否需要内层页面设置frame-ancestors outer middle?
不需要。内层页面只需要信任直接嵌入它的中间页面即可,中间页面已经通过自身的frame-ancestors规则被外层页面信任,内层不需要额外把外层页面加入允许列表。
内层页面仅设置frame-ancestors outer是否足够?
完全不行。不管主窗口是外层还是中间页面,内层的直接嵌入者都是中间页面,此时内层的frame-ancestors只允许outer的话,直接父级middle不在允许列表中,浏览器会阻止内层页面加载,这个配置无论哪种场景都无法正常工作。
对应的页面结构代码:
<body> Outer page my URL is: https://outer <iframe src="https://middle"> Middle page my URL is: https://middle my SCP frame-ancestors is: outer <iframe src="https://inner"> Inner page my URL is: https://inner my SCP frame-ancestors is: middle </iframe> </iframe> </body>
内容的提问来源于stack exchange,提问作者McLayn
相关产品推荐
相关产品推荐

