Ste*_*non 5 security http-headers x-frame-options content-security-policy strict-transport-security
我已经构建了一个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
Run Code Online (Sandbox Code Playgroud)
(当我说text/html我也包括在内时application/xhtml+xml。)
Referrer-Policy 是所有内容类型,因为CSS能够加载字体和图像。
Strict-Transport-Security在“HSTS Preload List”的部署建议中指出:
将标头添加
Strict-Transport-Security到所有 HTTPS 响应
在 apache 中,这看起来像(请注意,我没有包含该preload指令,开发人员在添加该指令之前应首先阅读 HSTS 预加载列表的部署建议):
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=16070400; includeSubDomains" "expr=%{HTTPS} == 'on'"
</IfModule>
Run Code Online (Sandbox Code Playgroud)
X-XSS-Protection如果您正在使用 CSP(未经允许'unsafe-inline')那么您可能不需要X-XSS-Protection再担心:
X-XSS-Protection.Content-Security-Policy(以及一般与安全相关的标头)作为一般方法,您至少需要向能够执行脚本的所有(常见)MIME 类型添加安全标头:
此外,IMO 考虑Referrer-Policy对所有响应设置严格的要求。我希望这有帮助 :)
从理论上讲,只有“活动”文档才需要它,就像 X-XSS-Protection 标头一样(Info Security 的相关答案)。只要在主文档上设置了策略(即使通过元标记),就应该根据该策略而不是外部资源上的策略来阻止外部资源(在加载 CDN 文件时很容易看到,这些文件几乎肯定没有您的 CSP 或任何 CSP 集)。
所以我想说你的估计是正确的;text/HTML 和 XML 绝对应该有它,任何可以执行 Javascript 的东西。对于静态资源来说应该不重要。它们将根据主文档的 CSP 被阻止或允许。
我承认,就我个人而言,我只是将它们发送到直接从我的服务器提供的所有资源上,因为我宁愿偏执也不愿把事情搞砸,而且每个请求的几十个字节似乎不会产生很大的影响,特别是在一个不提供服务的网站上。无法满足大量请求。如果您的网站确实处理了大量的请求……通常最好在尝试缩小标头之前减少请求。
与类似的事情一样,我一定会测试您的具体实现并尝试加载 CSP 应阻止的一些资源。您永远不知道浏览器实现何时可能存在缺陷(或者更常见的是,拼写错误或过度/不充分地应用您自己的规则)。