0

我们的应用程序使用客户端/服务器架构,它在 Windows 上运行。

我们的用户需要通过http(或将来的https)使用用户名/密码登录客户端,然后获取他们的权限。

以前我们使用http 协议,所以客户端和服务器之间的契约已经被一些客户端观察到了。

现在,我们启用了 https(使用 Let's Encrypt)协议,但我仍然不知道它在避免用户入侵身份验证过程方面是否可靠。

这是我可以看到的使用假服务器破解协议的潜在方法:

  1. 在主机文件中创建一个 ip 到主机(真实主机名)的映射
  2. 制作一个使用上述 ip 的假 http 服务器,并提供与我们的服务器相同的身份验证 API。

客户端使用cpprestsdk发送 http 请求。

由于 web 服务器是公开的,用户可以使用 chrome 等浏览器轻松获取 ca,似乎使用wireshark 很容易拦截 https 请求/响应。

我的问题是我的假设是否有效?如果是这样,我该如何进行更多更改以防止在后续版本中出现这种情况。

4

1 回答 1

0

您的问题是有效的,并且 https 容易受到中间人攻击(MITM)。您需要使用 HTTP Public-Key-Pins 响应标头。它将特定的加密公钥与特定的 Web 服务器相关联,以降低使用伪造证书进行 MITM 攻击的风险。如果一个或多个键被固定并且服务器没有使用它们,浏览器将不会接受合法的响应,并且不会显示它。您可以在此处阅读详细信息 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Public-Key-Pins

于 2017-09-16T15:47:06.187 回答