在响应非HTML请求时设置内容安全策略意味着什么?

我知道我可能会为我的网站主页设置CSP标题,比如https://example.com,以限制从何处加载脚本和其他资源。但是,如果主页上没有CSP,浏览器将如何处理后续请求中的策略

这是一个两个例子:

  1. 我浏览到https://example.com并返回一些HTML(无CSP标题)
  2. HTML包含来自https://example.com/script.js[*]
  3. 此脚本通过发出GET tohttps://api.example.com[*]
  4. 然后,同一脚本将打开一个指向同一域的websocket,https://api.example.com
  5. 然后,同一脚本发出另一个请求,从外部发布到https://api.analytics.com

[*]在步骤2和3中,如果script.js或JSON响应返回限制性CSP,如内容安全策略:默认src'none',会发生什么?是否会更改任何下游请求?浏览器是否会阻止脚本的任何请求?或者是因为原始页面加载未包含任何CSP而允许的

谢谢

当前的CSP规范(第2版)规定(重点):

3.6。政策适用性

策略与受保护的资源相关联,并针对该资源实施或监视如果资源未创建新的执行上下文(例如,在文档中包含脚本、图像或样式表时),则随该资源交付的任何策略都将被丢弃,而不会产生任何效果。其执行受包括上下文在内的一项或多项政策的约束

CSP仅适用于创建新执行上下文(即网页)的资源,该上下文仅包括顶级文档、嵌入对象,如<iframe&gt和作为Web工作程序加载的脚本。如果一个资源是通过HTTP提供的,并且该资源没有以创建新的执行上下文的方式使用,那么CSP没有任何效果

因此,无论脚本是否使用内容安全策略头,脚本的行为都是相同的

发表评论