' child-src'指令已弃用,将于2017年8月左右在M60中删除。请使用' script-src'相反,工人指令。
那么在现代(减去2个版本)浏览器中使用的正确指令集是什么?看起来像 frame-src + script-src 就足够了?但是 script-src 应该是什么呢?
PS:对于" undeprecate"甚至是合法的东西?
答案 0 :(得分:6)
2018-12-20更新
child-src
同时been un-deprecated ...所以现在frame-src
和child-src
都不再被弃用了。但这里原始答案的指导仍然适用:
那么在现代(减去2个版本)浏览器中使用的正确指令集是什么?
似乎答案取决于您究竟要为其指定政策。
iframe
元素和脚本制定不同的策略,那么只需使用default-src
为两者指定相同的策略。iframe
元素的策略与其他资源的策略不同,则使用frame-src
。同样,如果您希望脚本的策略与其他资源的策略不同,请使用script-src
。script-src
策略即可,并且可以在此处停止。script-src
策略的同时,也要提供worker-src
策略。 worker-src
一个版本不会影响浏览器,但是当浏览器确实添加支持时,它们将面向未来。如果您对child-src
未被弃用的理由感到好奇,请参阅https://github.com/w3c/webappsec-csp/issues/239#issuecomment-336135344:
我希望其他供应商能够实施
worker-src
,以便我们可以降低child-src
的使用率并将其从平台中移除,但它看起来不会很快发生足够(删除Chrome的奇怪后备将在0.006%的页面浏览量中打破工人负载,这不是很大,但不是没有)。
2017-09-04回答
它甚至比问题中描述的更复杂,因为CSP3规范还引入了the worker-src
directive。但规范给出了the following guidance:
child-src
模型已经大幅改变:
- 在CSP级别2中已弃用的
frame-src
指令尚未过时,但如果不存在,则继续推迟到child-src
(依次推迟到default-src
)。< / LI>- 添加了
worker-src
指令,如果不存在则推迟到script-src
(同样依次推迟到默认-src)。- 醇>
child-src
现已弃用。
那是https://w3c.github.io/webappsec-csp/,这是编辑的草稿,但你应该总是参考当前的规范要求。理由:您不能相信https://www.w3.org/TR/CSP/是最新的(通常您不能相信https://www.w3.org/TR下的任何内容是最新的),编辑的草稿是浏览器实现者实际实现的(他们不等待实施,直到https://www.w3.org/TR下发布的内容。)
无论如何,child-src
指令被弃用的原因是its effect is specified as:
child-src 指令控制嵌套浏览上下文(例如
<iframe>
和<frame>
导航)和工作人员执行上下文的创建。
实践中的问题是:iframe
与工作脚本非常不同。这就是为什么添加worker-src
以及为什么frame-src
未被弃用的原因(因为您确实需要一个单独的指令来指定iframe
元素的策略),以及为什么child-src
是不推荐使用(因为您实际上不希望将一个策略应用于iframe
元素和工作程序脚本。)
那么在现代(减去2个版本)浏览器中使用的正确指令集是什么?
似乎答案取决于您究竟要为其指定政策。
iframe
元素和脚本制定不同的策略,那么只需使用default-src
为两者指定相同的策略。iframe
元素的策略与其他资源的策略不同,则使用frame-src
。同样,如果您希望脚本的策略与其他资源的策略不同,请使用script-src
。script-src
策略即可,并且可以在此处停止。script-src
策略的同时,也要提供worker-src
策略。 worker-src
一个版本不会影响浏览器,但是当浏览器确实添加支持时,它们将面向未来。PS:对于&#34; undeprecate&#34;甚至是合法的东西?
是。虽然我不记得曾见过任何其他规范或工作组这样做,但在这种情况下这是正确的 - 因为CSP规范作者和工作组意识到child-src
是一个错误,{{{ 1}}实际上是必要的,弃用它是错误的。
所以他们解除了这些错误 - 并且相对较快。在这种情况下它工作原因的一部分原因是:frame-src
并没有被弃用足够长的时间以至于浏览器不能放弃对它的支持,而且许多Web开发人员也从未使用{{1}开头。