如何允许所有具有 CSP header 的框架祖先?
How to allow all frame ancestors with CSP header?
我有一个网络应用程序,我想在具有不同域的网络应用程序的 iframe 中显示它。由于我添加了 content-security-policy header 我的应用程序拒绝在 iframe 中显示。我看到我需要添加 frame-ancestors 选项,但我看到的所有示例都使用特定域。我怎样才能允许它用于所有域?是“框祖*;”足够的?谢谢!
简而言之 - 是的,*
允许 iframe 的任何来源,除了 data:
。
请注意元标记 <meta http-equiv='Content-Security-Policy' content="...">
中的 frame-ancestors is not supported(但看起来您使用 HTTP header交付 CSP,所以此警告不适合您。
但是如果你真的希望允许所有的框架祖先 - 更可靠的是根本不指定 frame-ancestors 指令,因为现在 Mozilla Firefox 有一些错误。
PS:您没有在浏览器控制台中附加错误的打印屏幕 - 可能是 iframe 被 CSP 以外的其他原因阻止了吗?
在暴露 CSP 详细信息后更新
<html>
parent page issues CSP: default-src 'self';
since frame-src omitted, it fallback to default-src and result be: frame-src 'self'
<iframe src=''></iframe>
</html>
iframe 允许使用与 parent 相同的 scheme://host:port
页面加载。
'self' 是棘手的,因为如果 parent 通过 HTTP: 加载,iframe 通过 HTTPS: 将在 CSP2 浏览器中被阻止。 CSP3 浏览器 do upgrade(见第 3 段)HTTP:到 HTTPS:,一切正常。
如果 parent 页面发布 frame-ancestors *
政策,这意味着您允许将其嵌入到任何其他网页的 iframe 中。
X-Frame-Options HTTP header 提供相同的功能,但 it's overridden 如果发出 frame-ancestor。
- frame-ancestor 指令不影响
<iframe>
嵌入到发布此 CSP 的页面。它会影响允许嵌入此页面的位置。
- 但是
<iframe>
可以使用规则 frame-ancestors domain1.com domain2.com
发布自己的 CSP 以限制它嵌入到其他 web-pages.
这就是它的工作原理。您可以使用 test of frame-ancestors 来阐明不同 <iframe src=/srcdoc=
.
的详细信息
因此,如果您使用自己的 domain/subdomains 嵌入 iframe,使用起来会更安全:
frame-ancestors 'self';
或者如果您使用子域:
frame-ancestors http://example.com https://example.com http://*.example.com https://*.example.com;
我有一个网络应用程序,我想在具有不同域的网络应用程序的 iframe 中显示它。由于我添加了 content-security-policy header 我的应用程序拒绝在 iframe 中显示。我看到我需要添加 frame-ancestors 选项,但我看到的所有示例都使用特定域。我怎样才能允许它用于所有域?是“框祖*;”足够的?谢谢!
简而言之 - 是的,*
允许 iframe 的任何来源,除了 data:
。
请注意元标记 <meta http-equiv='Content-Security-Policy' content="...">
中的 frame-ancestors is not supported(但看起来您使用 HTTP header交付 CSP,所以此警告不适合您。
但是如果你真的希望允许所有的框架祖先 - 更可靠的是根本不指定 frame-ancestors 指令,因为现在 Mozilla Firefox 有一些错误。
PS:您没有在浏览器控制台中附加错误的打印屏幕 - 可能是 iframe 被 CSP 以外的其他原因阻止了吗?
在暴露 CSP 详细信息后更新
<html>
parent page issues CSP: default-src 'self';
since frame-src omitted, it fallback to default-src and result be: frame-src 'self'
<iframe src=''></iframe>
</html>
iframe 允许使用与 parent 相同的 scheme://host:port
页面加载。
'self' 是棘手的,因为如果 parent 通过 HTTP: 加载,iframe 通过 HTTPS: 将在 CSP2 浏览器中被阻止。 CSP3 浏览器 do upgrade(见第 3 段)HTTP:到 HTTPS:,一切正常。
如果 parent 页面发布 frame-ancestors *
政策,这意味着您允许将其嵌入到任何其他网页的 iframe 中。
X-Frame-Options HTTP header 提供相同的功能,但 it's overridden 如果发出 frame-ancestor。
- frame-ancestor 指令不影响
<iframe>
嵌入到发布此 CSP 的页面。它会影响允许嵌入此页面的位置。 - 但是
<iframe>
可以使用规则frame-ancestors domain1.com domain2.com
发布自己的 CSP 以限制它嵌入到其他 web-pages.
这就是它的工作原理。您可以使用 test of frame-ancestors 来阐明不同 <iframe src=/srcdoc=
.
因此,如果您使用自己的 domain/subdomains 嵌入 iframe,使用起来会更安全:
frame-ancestors 'self';
或者如果您使用子域:
frame-ancestors http://example.com https://example.com http://*.example.com https://*.example.com;