我们的应用程序使用客户端/服务器架构,它在Windows上运行。
我们的用户需要通过 http(或将来的https)使用用户/密码登录客户端,然后获取他们的权限。
以前我们使用 http协议,因此一些客户已经可以观察到客户端和服务器之间的合同。
现在,我们启用了https(使用Let的加密)协议,但我仍然不知道它是否可靠,以避免用户入侵身份验证过程。
以下是我可以通过使用假服务器破解协议的潜在方法:
客户使用 cpprestsdk 发送http请求。
由于Web服务器是公共的,因此用户可以使用Chrome之类的浏览器轻松获取ca,似乎很容易通过使用wireshark拦截https请求/响应。
我的问题是我的假设有效吗?如果是这样,我怎样才能进行更多更改以防止在更进一步版本中出现这种情况。
答案 0 :(得分:0)
您的问题是有效的,https很容易受到中间人攻击(MITM)。您需要使用HTTP Public-Key-Pins响应头。它将特定加密公钥与特定Web服务器相关联,以降低使用伪造证书进行MITM攻击的风险。如果一个或多个密钥被固定且服务器未使用它们,则浏览器将不接受该响应为合法,并且不会显示该响应。 您可以在此处阅读详细信息 - https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Public-Key-Pins