Soh*_*dev 2 browser http cross-domain http-headers content-security-policy
我们正在开发一个 Web 项目,其中内容安全策略是通过 HTTP 标头和元标记强制执行的。有一组默认属性,它们是 HTTP 标头的一部分,每个页面通过文档标头中的元标记指定附加策略。
项目中的页面之一加载 iframe 内的内容。该页面的 HTTP 标头中的 Content-Security-Policy 是
Content-Security-Policy: frame-src *;
该页面的文档标题中有以下元标记
<meta http-equiv="Content-Security-Policy" content="default-src none;"/>
MDN Web 文档中提到后备顺序是frame-src-> child-src-> default-src。尽管frame-src在 HTTP 标头中进行了设置,但我在浏览器控制台中收到以下错误消息(在 Google Chrome 和 Microsoft Edge 上尝试过):
Refused to frame '<url here>' because it violates the following Content Security Policy directive: "default-src none". Note that 'frame-src' was not explicitly set, so 'default-src' is used as a fallback.
Run Code Online (Sandbox Code Playgroud)
还,
将这两个策略移动到 HTTP 标头或元标记可以按预期工作
上面关于内容安全策略的frame-src 的更通用的页面解释了您所看到的内容:
\n\n\n多种内容安全策略
\nCSP 允许为资源指定多个策略,包括通过
\nContent-Security-Policy标头、Content-Security-Policy-Report-Only标头和<meta>元素。\n
Content-Security-Policy您可以多次使用标头...添加额外的策略只能进一步限制受保护资源的功能。
因此,对于多个 CSP,它\xe2\x80\x99s 就像所有这些都在发挥作用,而 不是像您似乎想要的那样,将它们组合成一个组合策略。因此,在您的示例中,您实际上已frame-src设置为none(因为您有一个default-src且没有特定的覆盖frame-src),因此稍后打开它不起作用。
| 归档时间: |
|
| 查看次数: |
3142 次 |
| 最近记录: |