内容安全策略 header 和 header 大小

Content security policy headers and header size

有大content-security-policyhttpheader推荐吗?由于 header 数据包大小的限制,某些应用程序无法处理从大型 content-security header 读取数据。然而,要列出站点所需的域,具体而言,每个域都需要字节。您是否注意到规范的这一限制?您是如何解决这个问题的?

实际上,HTTP header 的大小有两种类型的限制 - 服务器端和客户端:

  • Apache Web 服务器的所有 HTTP 响应 header 的最大大小,默认情况下为 8190 字节。
    如果所有 HTTP headers 的总大小 (CSP + "HTTP/1.1 200 OK" + Content-type:"text/html; charset=utf-8" + 所有其他) 超过了允许的限制,网络服务器 returns 错误 502.

  • 限制某些移动设备上接收缓冲区的大小。可以通过违规报告检测到,其中 original-policy 字段被截断了。最后一次观察是在大约 6 年前。

解决问题:

  • 使用 * 将一组子域列入白名单 (*.google.com)。
  • 使用 img-src * 允许来自任何图像,因为不太可能通过图像进行 XSS。
  • script-src 指令中使用 'strict-dynamic' 标记并从中删除所有 host-based 来源,http: https: 除外。有关详细信息,请参阅 Google 的 strict CSP