【问题标题】:When should HSTS be enabled?什么时候应该启用 HSTS?
【发布时间】:2014-04-13 08:11:47
【问题描述】:

如果我正在运行仅 HTTPS 服务,是否有任何理由不启用 HSTS?是否有在不永久启用 HSTS 或“退出”HSTS 的情况下测试 HSTS 的策略?

【问题讨论】:

    标签: security ssl https


    【解决方案1】:

    我想在 Mike 的回答中添加警告,您可能没有运行仅支持 HTTPS 的服务。原因是当您的服务器不监听端口 80 时,如果您只输入域而不是协议(stackoverflow.com 而不是 https://stackoverflow.com),您的浏览器将不会自动尝试连接端口 443 (https)并显示连接错误。因此,对于大多数站点而言,仅 HTTPS 服务是不可能的。

    通过将每个 http 页面通过 301/303 转发到 https 页面来确保 https 连接的经典方法 is not a sufficient replacement for HSTS 事实上,HSTS 正是为这种情况而构建的。原因是许多书签和链接仍将指向 http,并且每次用户在未指定协议的情况下输入 URL(始终如此)时,浏览器将首先尝试 http 连接。活跃的攻击者可以劫持第一个连接,并且永远不会将用户转发到 https 站点。

    为了让您更生动地了解此类攻击,请想象一个将每个 DNS 请求欺骗到 twitter 并使用自己的 IP 进行响应的状态。当它接收到一个 https 请求时,它会在没有任何操作(以及拦截的机会)的情况下将其转发到 twitter。但是当它收到一个 http 请求时,它会使用ssl strip Mike 提到的工具将连接的内容透明地转发到 twitter 的 TLS 端口。用户和 twitter 都没有注意到任何东西都关闭了(除了检查 TLS 加密的非常警觉的用户),但是状态可以访问每个登录密码。

    HSTS 可以保护那些之前与服务器建立过合法 https 连接并且已经看到 HSTS 标头的用户。标头指示浏览器将域的每个 http url 与 https url 本身交换(在完全建立 http 连接之前)并拒绝与该域的任何未加密连接。因此,在上述场景中,几乎所有用户都不会最终连接到受损的 http 连接,并且可以安全抵御全国范围的攻击。

    【讨论】:

      【解决方案2】:

      从纵深防御的角度来看,您仍应启用HTTP Strict Transport Policy (HSTS)。将来可能会出现一些可以从 HSTS 中受益的问题,包括:

      • 服务器配置错误,HTTP 被意外打开。我最近访问了一个获取信用卡详细信息的网站,它有一个 HTTPS 网站,但 Google 链接到他们的 HTTP 网站,因此根据您到达那里的方式,您可能会以明文形式提交您的详细信息。
      • 恶意攻击者poisonshijacks DNS 记录将客户端重定向到他们自己的仅HTTP 服务器,可能与ssl strip 攻击结合使用。

      您还应该确保足够长的 HSTS 生命周期,例如一年或更长时间。

      您可以通过将 max-age 设置为 0 来禁用对 HSTS 的支持。只要您最初设置了该值,您就需要保留此标头。例如。如果您将其设置为 2 年并改变主意,则您需要将 max-age=0 保留至少 2 年(并继续在该域上提供 HTTPS 服务),这样过去的客户就不会有任何连接到它的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-02
        • 2011-04-15
        • 2017-04-10
        • 2012-03-19
        • 2018-05-12
        • 2018-12-11
        • 1970-01-01
        相关资源
        最近更新 更多