什么是 HSTS(HTTP 严格传输安全)

安全资讯 小布 1296浏览 0评论

HTTP 严格传输安全 (HSTS) 是一种 Web 安全策略机制,它使网站能够声明自己只能通过安全连接进行访问。这有助于保护网站和用户免受协议降级和 cookie 劫持攻击。

为什么要引入 HSTS?

HTTP 用于各种传输,通常是传输控制协议 (TCP)。

但是,TCP 不提供完整性保护、机密性或安全主机标识。

这导致了安全套接字层 (SSL) 及其后续传输层安全 (TLS) 的开发。SSL/TLS 在应用程序协议和 TCP 之间提供了一个加密层,通常称为HTTPS。

通常,用户代理(如 Web 浏览器)将采用各种本地安全策略来决定如何与主机交互,基于服务器、用户首选项及其通信方法(HTTP 或 HTTPS)之间的协商。

但是,某些用户代理允许用户在无法建立安全连接时选择继续与网站交互。当 TLS 证书的信任链未经过验证、过期或 TLS 主机的域名在 TLS 证书中显示不正确时,可能会发生这种情况。

这种行为称为点击不安全。

尽管在缺乏 HTTPS 的情况下为用户提供继续使用网站的选项可以让用户满意,但它可能会引入 攻击媒介 ,使用户容易受到某些类型的 网络攻击,尤其是 中间人攻击(MITM 攻击)、降级攻击和会话劫持攻击。

SSL剥离

由于 HSTS 允许网站声明它们只能通过安全连接访问,因此它们可以防止用户通过任何 HTTP 连接连接到它们。

这可以防止称为 SSL 剥离的安全漏洞。

SSL 剥离是一种降级攻击,由Moxie Marlinspike 在其 2009 年 BlackHat Federal talks  New Tricks for Defeating SSL in Practice 中引入 。

降级攻击是对计算机系统的一种加密攻击形式,或者在这种情况下,是一种通信协议,它使其放弃 加密连接 (HTTPS),转而使用较旧的未加密连接 (HTTP),该连接通常用于向后兼容较旧的系统。

SSL 剥离是作为中间人攻击的一部分实施的,其中 Web 流量被拦截并从网站的安全 HTTPS 版本重定向到未加密的 HTTP 版本。

这种攻击继续成功的主要原因是许多网站继续不使用 TLS/SSL 证书。这使得无法知道(在没有先验知识的情况下)网站缺少 HTTPS 是由于 SSL 剥离攻击还是因为它们没有 TLS 证书。

此外,在降级过程中没有警告警告用户,即使是最警惕的用户也很难检测到攻击。

随着 Marlinspike 创建的工具完全自动化此类攻击,它代表了真正的 网络安全风险。

会话劫持

会话劫持或 cookie 劫持是另一个通过点击不安全性启用的漏洞。

会话劫持利用有效的计算机会话来未经授权访问信息或服务。

这对于 Web 开发人员尤其重要,因为 cookie 用于在许多网站上维护会话。

如果网站没有将其 cookie 标记为安全,并告诉用户代理仅通过 HTTPS 发送 cookie,则它们很容易被攻击者窃取。由于不考虑传输安全性而将非安全 cookie 返回给主机,因此它们容易受到中间人攻击。

一旦攻击者可以访问 cookie,他们就可以在合法网站上冒充用户。

HSTS 是如何工作的?

HSTS 使 Web 服务器能够声明 Web 浏览器和其他用户代理的任何交互都必须通过 HTTPS 连接而不是不安全的 HTTP 连接进行。

服务器可以通过在 HTTPS 连接上提供响应头来实现 HSTS 策略(通过 HTTP 响应头发送的 HSTS 头被忽略)。HSTS 标头名称为“Strict-Transport-Security”,还指定了一段时间,在此期间用户代理只能通过 HTTPS 请求访问服务。

这意味着第一次使用 HTTPS 访问站点时,它会返回 Strict-Transport-Security 标头,浏览器会记录此信息,因此以后尝试使用 HTTP 加载站点时会自动使用 HTTPS。

当 Strict-Transport-Security 标头指定的过期时间过去后,下一次尝试通过 HTTP 加载站点将正常进行,而不是自动使用 HTTPS。

但是,每当 Strict-Transport-Security 标头传递给用户代理时,它都会更新该站点的过期时间,因此站点可以刷新此信息并防止超时过期。

如果需要禁用 HSTS,Web 服务器可以将 max-age 设置为 0(通过 HTTPS 连接)以立即使 HSTS 标头过期,从而允许通过 HTTP 请求进行访问。

例如,服务器可以通过 Strict-Transport-Security 发送一个请求头,请求下一年的未来请求仅使用 HTTPS:max-age=31536000

当 Web 应用程序向用户代理发布 HSTS 策略时,符合标准的用户代理的行为如下:

  • 任何不安全的链接都会自动转为安全链接(例如 http://example.com/ 在访问服务器之前会被修改为 https://example.com)
  • 如果无法确保安全连接(例如服务器没有有效证书),用户代理将终止连接并不允许用户访问网站。

要了解的最重要的事情是,HSTS 策略通过不允许最终用户使用不安全的连接来防止点击不安全。

什么是涉及 HSTS 的示例情况?

想象一下,您的员工在咖啡馆使用免费 WiFi 接入点并开始上网,访问您组织的工资系统。

不幸的是,他们使用的接入点实际上是攻击者的笔记本电脑,他们拦截了原始 HTTP 请求并将您的员工重定向到您的工资系统的克隆而不是真实的东西,从而暴露了您员工的 个人身份信息 (PII)。

如果您的工资系统使用 HSTS,并且您的员工使用 HTTPS 访问过它,那么他们的浏览器将知道只使用 HTTPS,从而防止这种类型的 中间人攻击。

HSTS 有哪些限制?

使用 HSTS 的一个关键限制是无法通过 HTTPS 连接的用户将无法使用该站点。

此外,由于 HSTS 策略是在响应标头中传达的,因此它要求用户代理首先访问网站以了解它使用 HSTS。

这意味着,如果初始请求使用不安全的协议(如纯 HTTP)或者初始请求的 URI 是通过不安全的通道获得的,则它仍然不受主动攻击的保护。

这也将适用于 HSTS max-age 中指定的活动期之后的第一个请求(网站通常根据用户活动和行为设置几天或几个月的时间段)。

HSTS 的浏览器支持广泛,包括 Google Chrome、Mozilla Firefox、Internet Explorer、Microsoft Edge、Opera 和 Safari 通过从 HSTS 预加载列表中预加载 HSTS 策略来解决此限制。HSTS 列表包含支持 HSTS 并随浏览器分发的已知网站,因此它使用 HTTPS 对列出的网站进行初始请求。

由于这种方法永远无法在整个 Web 上扩展,因此一直在讨论能够在 DNS 记录中声明 HSTS 并通过DNSSEC安全地访问它们 ,这可以确保有效性。

此外,HSTS 对域名抢注、基于 DNS 的攻击和中间人攻击无效 ,这些攻击为来自不在 HSTS 预加载列表中的人工域的流量提供服务。

并且由于 HSTS 依赖于 TLS 本身,因此它也依赖于 TLS 的安全性。

什么是 HSTS 部署最佳实践?

如果您的站点致力于 HTTPS 并且您想要预加载 HSTS,您必须:

  • 提供有效证书
  • 如果您正在侦听端口 80,则将 HTTP 重定向到同一主机上的 HTTPS
  • 通过 HTTPS 为所有子域提供服务
  • 如果该子域的 DNS 记录存在,则您必须为 www 子域支持 HTTPS
  • 服务可以在基本域上为 HTTPS 请求提供 HSTS 标头:
  • 最大年龄必须至少为 31536000 秒(1 年)
  • 必须指定 includeSubDomains 指令
  • 必须指定 preload 指令
  • 如果您从 HTTPS 站点提供额外的重定向服务,该重定向必须仍具有 HSTS 标头(而不是它重定向到的网页)

我们建议您从以下步骤开始:

  • 检查您网站的所有子域和嵌套子域,并确保它们通过 HTTPS 工作。
  • 为所有 HTTPS 响应启用 HSTS 并分阶段增加 max-age。在每个阶段,检查损坏的页面,监控站点的指标,并修复出现的任何问题,然后等待阶段的完全马克思时代,然后再继续。您可以使用以下标头值:
  • 5 分钟 – 严格运输安全:max-age=300;包含子域
  • 1 周 – 严格运输安全:max-age=604800;包含子域
  • 1 个月 – 严格运输安全:max-age=2592000;包含子域
  • 一旦您确信没有问题,将 max-age 增加到 2 年,并使用 preload 指令将您的站点提交到 HSTS 预加载列表:
  • 2 年 – 严格运输安全:max-age=63072000;包括子域;预载
  • 您可以通过https://hstspreload.org/将您的网站添加到 HSTS 预加载列表 。

这是 Chromium 项目希望在预加载提交中看到的内容。

HSTS 的历史是什么?

HSTS 规范 (RFC 6797) 基于 Collin Jackson 和 Adam Barth在 2008 年发表的名为ForcedHTTPS: Protecting High-Security Web Sites from Network Attacks的论文中的原创工作  

2009 年 9 月 18 日,PayPal、Jackon 和 Barth 在原始论文中发布了协议大纲的更新版本。

这导致了当时名为“STS”规范的最后一个“社区版本”于 2009 年 12 月 18 日发布,并根据社区反馈进行了修订。

最后,2012 年 11 月 19 日,HSTS 规范 (RFC 6797) 在 2012 年 10 月 2 日获得互联网工程指导组 (IESG)批准后发布,  IESG是一个由 互联网工程任务组 (IETF) 主席和区域主管组成的机构。

哪些浏览器支持 HSTS?

  • 自 4.0.211.0 版起的 Chromium 和 Google Chrome
  • Firefox 从版本 4 开始;在 Firefox 17 中,Mozilla 集成了支持 HSTS 的网站列表
  • Opera 从 12 版开始
  • Safari 自 OS X Mavericks 10.9 版起
  • 安装 KB 3058515 时,Windows 8.1 和 Windows 7 上的 Internet Explorer 11
  • Windows 10 上的 Microsoft Edge 和 Internet Explorer 11
  • BlackBerry 10 浏览器和 WebView 自 BlackBerry OS 10.3.3

 

我们可以帮助您持续监控供应商的外部安全控制并提供公正的安全评级。 

 

我们的评级基于对 70 多个向量的分析,包括:

  • 容易受到中间人攻击
  • 不安全的 SSL/TLS 证书
  • SPF、DKIM 和 DMARC 设置
  • HTTP 严格传输安全 (HSTS)
  • 电子邮件欺骗和网络钓鱼风险
  • 漏洞
  • 恶意软件易感性
  • 不必要的开放管理、数据库、应用程序、电子邮件和文件共享端口
  • 暴露于已知的 数据泄露 和 数据泄露
  • 易受攻击的软件
  • HTTP 可访问性
  • 安全 cookie 配置
  • 智能安全问卷调查结果

我们还可以帮助您立即根据他们的行业对当前和潜在供应商进行基准测试,以便您了解他们的累积情况。

为了评估您自己的信息安全控制,   可以监控您组织的 70 多种安全控制,提供简单、易于理解的 网络安全评级, 并自动检测 S3 存储桶、Rsync 服务器、GitHub 存储库中泄露的凭据和数据暴露和更多。

布尔云安团队与其他安全评级供应商之间的主要区别在于,有非常公开的证据证明我们在防止数据泄露 和 数据泄露方面的专业知识 。

转载请注明:布尔云安的博客 » 什么是 HSTS(HTTP 严格传输安全)

头像
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址