假设一个用户通过了身份验证,整个帐户身份验证过程发生在安全的 HTTPS 下。
成功登录后,用户将被重定向回主页。但是,主页包含网站内未启用 SSL 的链接 - 基本 HTTP。
例如:
这是一个安全漏洞吗?如果是,严重程度如何?如果不是,为什么?从 HTTPS 到 HTTP 时,cookie 不是不安全的吗?
假设一个用户通过了身份验证,整个帐户身份验证过程发生在安全的 HTTPS 下。
成功登录后,用户将被重定向回主页。但是,主页包含网站内未启用 SSL 的链接 - 基本 HTTP。
例如:
这是一个安全漏洞吗?如果是,严重程度如何?如果不是,为什么?从 HTTPS 到 HTTP 时,cookie 不是不安全的吗?
在浏览安全/隐私方面,任何时候您通过 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 相同的强度。
其他一些收获。