hsts - 是否值得将 CSP header 与 HSTS header 进行比较?

标签 hsts

我正在开发一个将 HSTS header 添加到 Web 应用程序的项目。
作为准备工作,我仅使用 default-src https 指令在报告模式下添加了 CSP header 。目的是评估违规情况并决定添加 HSTS header 是否会破坏任何用例。
问题:

  1. 这是一种有值(value)的方法吗?
  2. 对于 HSTS 使用这种方法我们会错过哪些场景?
  3. 如果这些方法与我上面描述的方法不同,推荐的方法是什么?

最佳答案

如果你只在你的服务器上使用 https,我会认为这是很明显的。你有设置https吗?您是否设置了重定向以强制将所有 http 请求重定向到https?这些问题应该很容易通过查看您的服务器配置来回答,我认为您不需要 CSP 来回答它们。如果两者的答案都不是"is",那么您为什么要考虑 HSTS?

CSP 支持不是普遍的(尽管诚然 HSTS 也不是),并且对于这些东西,通常是较旧的、不太常见的浏览器会崩溃,因为您可能会测试常见的浏览器,以确定您的方法是否会给您信心你需要继续是有争议的。

您应该注意的一件事是您是否正在使用 includeSubDomains 标志。如果它影响的服务器数量超过您的预期,这可能会导致问题,但 CSP 无济于事,因为您可能只会在您认为会受到影响的服务器上设置 CSP。更多信息在这里:https://serverfault.com/questions/665234/problems-using-hsts-header-at-top-level-domain-with-includesubdomains .

另请注意,一旦实现了 HSTS,就无法再在浏览器中绕过证书错误。并不是说你应该这样做,而是说这个标志的另一种故意影响并不是每个人都知道。

请注意,解决 HSTS 问题的唯一方法(例如,如果你发现你毕竟需要 http),除了删除 header 并等待策略过期之外,是将最大年龄设置回零并希望人们使用 https 访问您的站点以获取此新的 HSTS 策略并覆盖之前的策略。使用 Chrome 可以手动查看和删除该政策,但如果您有大量访问者并且不知道除了完全重新安装之外还有其他浏览器可以执行此操作的任何方法,那么这是不切实际的。

最好的方法是充分了解 HSTS 是什么以及上述注意事项,然后从较低的到期时间开始,并在没有遇到任何问题的情况下慢慢建立它。

还有预加载列表,但在您运行它至少 6 个月没有任何问题之前,我会远离它。

关于hsts - 是否值得将 CSP header 与 HSTS header 进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32851315/

相关文章:

electron - 如何防止 Electron 的 Chromium 在获取请求上强制使用 HTTPS?

apache - 防止http页面重定向到https页面

http - 为什么 google.com 不在 HSTS 响应 header 上设置 includeSubDomains 指令?

.htaccess - 除了在 .htaccess 中强制使用 HTTPS 之外,我还需要启用 HSTS 吗?

javascript - 有没有办法在没有 SSL 证书的情况下清除 HSTS?

ruby-on-rails - 如何在 Rails 4 中提供 HSTS 支持

http - 为什么 SSL Labs 测试说在通过 HTTP 发送 header 时启用了 HSTS,但在通过 HTTPS 发送时却没有?

ruby-on-rails - 在基于域的 Rails 中有条件地实现 HSTS、SSL 和安全 Cookie

firefox - 解析 Firefox HSTS 预加载列表

hsts - 为什么我的网站被视为 "No HSTS header is present on the response"