HTTPS Web 服务切换到 HTTP。会出什么问题?

信息安全 Web应用程序 攻击 http
2021-09-07 08:54:22

我最近访问了一个曾经有 HTTPS 连接的网站。现在它只有一个普通的 HTTP 连接,并且身份验证方法已从用户+密码更改为“使用 Google 帐户进行身份验证”。

我联系了他们,问他们为什么放弃 HTTPS,他们告诉我“因为现在谷歌的身份验证是安全的,所以不再需要了”。

好吧,我不是安全专家,但在回复他们之前,我想知道:会出现什么问题?

所以,以我的知之甚少,我会说(如果我错了,请纠正我):

  • 客户端和服务器之间的通信中的隐私丢失(攻击者可以读取任何交换的信息,包括客户端可能发布到服务器的个人信息)。
  • 攻击者可能出于恶意修改客户端的请求。
  • 攻击者可以读取 cookie 并使用它来访问服务,就好像他们是最初使用 Google 服务进行身份验证的客户端一样。

我对吗?还有什么问题?

4个回答

你是对的,回归到 HTTP 是没有意义的。

请注意,您的所有观点都适用于一种特定类型的攻击,在这种攻击中,攻击者能够访问客户端和服务器之间的数据传输。那可能是 WiFi 热点的所有者,或者您的 ISP 充当中间人,位于您和服务器之间。这对于远程攻击者来说很难实现,但在公共 WiFi 上尤其容易。

HTTPS添加到 HTTP 的是安全数据传输Web 应用程序本身可以完全没问题 - 如果您通过未加密的通道进行通信,攻击者将能够读取、修改和注入任意数据到您的请求和服务器响应中。使用捕获的会话 cookie,只要 cookie 有效,也可以冒充您。

攻击者不能做的是接管您的 Google 帐户或稍后再通过 Google 重新进行身份验证。这是因为 Google 的身份验证始终通过 SSL 进行,并且授予的令牌在给定时间后过期。

因此,这种情况比立即获取您的凭据要好一些。但是,正如您所说,攻击者仍然能够接管会话并代表您执行任何操作。

我会提出以下问题:

在应用程序中进行身份验证有什么意义?

如果页面包含的所有内容都是公共内容并且可以通过外部方式进行验证(例如,debian 镜像,其中包含 PGP 软件包)并且您的用户不介意第三方审查他们访问的内容,则该页面可能不需要 https。但也不是登录。

要求身份验证的常见原因包括:

  • 有一些数据用户只能在登录时读取

  • 注册用户可以向其他人发送消息

  • 它允许用户通过维护仅由他使用的身份来获得声誉

  • 账号可以收到一些在外面获得的好处(比如访问付费内容)

所有这些都被在通信中使用 http 而不是 https 以及几乎任何其他插入登录名的原因所击败。不管密码没有暴露的事实(诚然这会更糟)。

前段时间,购买证书的价格争论不休,但现在有几家CA免费提供证书。

† Nitpicker 的角落,在极少数情况下,安全性不会因此受到影响。一个例子是 Mega,它通过 http 加载了一些常见的 javascript,但是一个 https 加载的脚本在执行它们之前验证了它们的哈希值。比到处设置 https 更脆弱且更复杂。孩子们,不要在家里尝试这个。

您的凭据是安全的,但可能会发生会话劫持

一种可能性可能是攻击者在充当中间人时进行了 SSL Strip 攻击,如果发生这种情况,HTTPS 网站将作为 HTTP 提供给受害者。但正如您已向网站确认他们是故意这样做的,所以这种可能性被取消了。

现在,Google 使用 oAuth2,因此与 Google 的握手将通过 HTTPS 进行,之后您将通过 HTTP 重定向到您的网站(当您使用您的 google 时,它与https://security.stackexchange.com/发生的方式完全相同帐户)。您的网站会在 oAuth 之后生成会话令牌。在这种情况下,HTTP 存在的风险是附件可以很容易地劫持您的会话并冒充您浏览网站

你是完全正确的。排除 Google 登录凭据,攻击者可以执行 MITM 攻击并拦截所有受害者的请求。我建议您向他们传达重新实现 SSL 协议的风险。