为什么通过头部传送 Content-Security-Policy 更“受欢迎”?

11
在3. CSP策略传递章节中,Content-Security-Policy HTTP响应头字段是传递策略的首选机制。但是有两种有效机制:通过HTTP头传递和通过HTML meta元素传递。
<meta http-equiv="Content-Security-Policy" content="..."/>

为什么通过头部传递是“首选”,或者更重要的是,使用HTML的标签传递的缺点是什么?
出于各种原因,在我们的部署中,将CSP添加到HTML头部更易管理。

https://stackoverflow.com/questions/42444106/where-should-you-configure-content-security-policy 这个问题有关,但没有解决我的问题。 - Marvin
继续评论我的问题,我意识到http-equiv元标记应该首先出现在头部,因为它仅适用于其后的元素(因此这可能是“首选”http头的原因之一...) - Marvin
1
根据说明,meta标签的限制包括以下内容:“Content-Security-Policy-Report-Only”头部不能在meta元素内使用,报告URI、frame-ancestors和sandbox指令也不能在其中使用。 - Alohci
如果使用meta元素而不是HTTP头部可以在没有任何可观察到的问题的情况下为您工作,并且正如您所说,更容易管理您的部署,那么就像@Alohci所说的那样。特别是如果您没有使用Content-Security-Policy-Report-Only头部并且没有使用report-uri、frame-ancestors或sandbox指令,那么只需在每个文档中指定meta元素即可,而无需使用HTTP头部。 - sideshowbarker
@Alohci,如果您将您的评论发布为答案,我会接受它,因为它似乎很合适。 - Marvin
2个回答

10

看起来这个问题已经在评论中得到了解答,但是没有人有几分钟的时间来写一篇回答,所以我将尝试自己回答。

与通过HTML meta元素传递相比,HTTP响应传递Content-Security-Policy支持一些额外的功能,例如 Content-Security-Policy-Report-Only report-uri frame-ancestors sandbox directives

然而,如果您不需要使用这些功能,使用HTTP头部没有任何优势。

请注意,在使用HTML方式时,http-equiv meta标签应该首先出现在头部,因为它仅适用于其后的元素。


4
在大型组织中,负责设置CSP的人与负责网页内容的人不同。当多个策略适用时,必须全部执行。开发人员(通过元素)无法放宽系统管理员(通过HTTP响应)建立的策略。安全负担从所有开发人员转移到了一小部分管理员身上。

2
在我工作的地方,情况并没有得到改善,反而因为需要更多人了解情况和沟通延迟而变得更加严重。我的意思是,如果有什么问题出现,不会是管理员来解决,而是开发人员,然后他们还要去找管理员来修复问题。 - iwat0qs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接