10

我已经构建了一个 Web 应用程序(使用我最喜欢的语言Fantom!),并且正在通过提供行业标准的 HTTP 响应标头来锁定它免受 XSS 和其他此类攻击。

我的问题是,应该为哪些响应设置标题?

我可以为每个响应设置标题,但这似乎很浪费,因为大多数请求都是针对图像、字体、样式表等的。Content-Security-Policy尤其是标题可能会变得很长。

由于很多标题都与拥有的 HTML 页面(以及其中包含的 Javascript)有关,我觉得它们中的大多数只需要为 HTML 页面设置。

我查看了各种资源,例如:

虽然他们解释了标题的作用,但他们没有解释应该为哪些资源使用和服务!

我在下面列出了 HTTP 响应标头,Content-Types我认为它们应该被提供。但是有谁知道这是否正确?

HTTP Response Header       text/html  All Content-Types
-------------------------  ---------  -----------------
Content-Security-Policy        X
Referrer-Policy                               X
Strict-Transport-Security                     X
X-Content-Type-Options                        X
X-Frame-Options                X
X-XSS-Protection               X

(当我说text/html我还包括时application/xhtml+xml。)

Referrer-Policy由于 CSS 能够加载字体和图像,因此属于所有内容类型。

4

2 回答 2

3

Strict-Transport-Security

在“HSTS Preload List”的部署建议中指出:

Strict-Transport-Security将标头添加到所有 HTTPS 响应

在 apache 中,这看起来像(注意我没有包含该preload指令,开发人员在添加之前应该先阅读 HSTS Preload List 的部署建议):

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains" "expr=%{HTTPS} == 'on'"
</IfModule>


X-XSS-Protection

如果您使用的是 CSP(不允许'unsafe-inline'),那么您可能不再需要担心X-XSS-Protection


Content-Security-Policy(以及一般与安全相关的标头)

作为一般方法,您至少希望将安全标头添加到能够执行脚本的所有(常见)MIME 类型:


Referrer-Policy此外,IMO 考虑为所有响应 设置严格限制。我希望这有帮助 :)

于 2019-07-30T15:39:51.610 回答
2

从理论上讲,只有“活动”文档才需要它,就像 X-XSS-Protection 标头一样(来自 Info Security 的相关答案)。只要在主文档上设置了策略(甚至通过 Meta 标签),就应该根据策略阻止外部资源,而不是外部资源的策略(在加载几乎可以肯定没有的 CDN 文件时很容易看到)您的 CSP 或任何 CSP 设置)。

所以我会说你的估计是正确的;text/HTML 和 XML 绝对应该拥有它,任何可以执行 Javascript 的东西。静态资源应该没关系。它们将根据主文档的 CSP 被阻止或允许。

我承认我个人只是将它们发送到直接从我的服务器提供的所有资源上,因为我宁愿偏执而不是搞砸一些事情,而且每个请求的几十个字节似乎不会产生很大的影响,尤其是在一个没有不能满足大量请求。如果您的网站确实提供了大量的请求......通常最好在尝试缩小标题之前减少请求。

与任何类似的事情一样,我一定会测试您的具体实现并尝试加载 CSP 应该阻止的一些资源。您永远不知道浏览器实现何时可能存在缺陷(或者更常见的是拼写错误或过度/不足地应用您自己的规则)。

于 2018-01-09T17:16:24.980 回答