HTTPS 重定向到 HTTP 是一个漏洞吗?

信息安全 tls 网络 饼干
2021-08-31 02:16:33

假设一个用户通过了身份验证,整个帐户身份验证过程发生在安全的 HTTPS 下。

成功登录后,用户将被重定向回主页。但是,主页包含网站内未启用 SSL 的链接 - 基本 HTTP。

例如:

  1. https://example.com

  2. https://example.com/login

  3. https://example.com

  4. http://example.com/foobar(无 SSL)

这是一个安全漏洞吗?如果是,严重程度如何?如果不是,为什么?从 HTTPS 到 HTTP 时,cookie 不是不安全的吗?

2个回答

在浏览安全/隐私方面,任何时候您通过 http,您的流量都可能(并且通常是,请参阅下面的缓存讨论)沿途被服务器拦截和摆弄。时期。您无法确定您通过 http 连接看到的页面是否实际上是 Web 服务器为响应您的 Web 客户端请求而发送的页面。

至于会话劫持,答案有点复杂。问题是您通过 https 连接输入您的用户名和密码,然后服务器会在您的浏览器上设置一个 cookie 来识别您。该 cookie 将通过您的浏览器在每次后续请求页面时发送回服务器,因此服务器将知道是您在请求页面。令人担忧的是,沿途有人在监听并复制该 cookie。然后,他们可以使用您的 cookie 向同一网站发送请求,该网站会认为是您。

Set-Cookie 标头有一个安全标志(请参阅此处),当 cookie 最初提供给您的浏览器时,可以打开该标志。如果设置了此标志,Web 客户端将不会将 cookie 发送回原始域,除非通过 https 连接。

例如,一个站点可能有两个身份验证 cookie,其中一个被标记为安全的。这样,无论何时您想做一些真正敏感的事情,您都需要拥有安全 cookie,从而被重定向到 https 页面。

在这种情况下,网站设计人员必须根据页面决定什么是“真正敏感”,什么不是。“哎呀”的范围是巨大的。这就是为什么首选 https 的原因之一。并非所有网站都这样做是有原因的:

  • (可能是最大的原因):许多网络(可能是您的 ISP)维护一个缓存服务器来监视离开其网络的流量。如果它发现您正在尝试检索其他人最近检索的内容(例如热门页面上的所有小图片和图标),它将为您提供缓存版本。对此有各种支持:原始站点有一种方法可以指示可以缓存和不可以缓存的内容,以及缓存多长时间。所有这一切对 ISP 和原始站点都有好处,因为这意味着它们都具有较少的进出其网络的带宽。Https 打破了这一点,因为代理现在不知道您要向原始站点询问什么。

  • (不再是问题)首次建立与站点的安全连接存在计算开销对于接受大量 https 连接的服务器来说,这曾经是一个问题。这个问题现在基本上已经消失了——有几个缓解协议的因素,以及加速硬件和其他基本解决了这个问题的方法。我只提到这一点,以防您听说 https 在服务器上施加了沉重的计算负载:AFAIK 不再正确。

的,但是,这是一种常见的模式。

例如,这就是 reddit 和 Instagram 的身份验证工作方式。

坦率地说,它唯一可以防止的就是通过网络以明文形式发送您的密码。但是该过程确实会通过 HTTP 公开您的会话和所有浏览数据,这仅意味着您的会话具有与 HTTP 相同的强度。

其他一些收获。

  • 通常,就像 reddit 和 instagram 一样,您的偏好或帐户页面也是通过 HTTPS 进行的。这有点毫无意义,但如果他们想要多汁的数据,它会迫使被动攻击者变成主动攻击者。
  • 在 HTTP 页面上,您的会话通过网络以纯文本形式公开,因此 MiTM 可以将他们想要的任何内容注入 HTTP 请求/响应、劫持您的会话、窃取 CSRF 令牌、XSS 无所不能等等等等。
  • 乍一看,您可能会认为其他一些网站与此类似,但实际上并非如此。例如,亚马逊。亚马逊不会让你通过 HTTPS 浏览他们的商店。但是,在进行购买和其他重要操作之前,会再次提示用户输入密码(一键订购是一个例外,成熟容易被劫持,我发现了一些 CSRF)。&ahem,这也意味着您从亚马逊购买的所有商品也都以明文形式公开&。
  • 对于支持 HTTP 的少数页面,谷歌也有与亚马逊相同的设置。