【问题标题】:Is it safe to auth user against https server?针对 https 服务器对用户进行身份验证是否安全?
【发布时间】:2018-02-25 14:07:42
【问题描述】:

我们的应用程序使用 client/server 架构,它在 windows 上运行。

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

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

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

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

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

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

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

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

【问题讨论】:

    标签: apache http security https cpprest-sdk


    【解决方案1】:

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

    【讨论】:

    • 中间人可以修改数据吗?由于网站持有私钥,我假设中间人不能修改数据,对吗?
    • 用户的浏览器将数据发送到服务器,但中间人拦截通信并可以查看/修改数据。
    • 用户的浏览器将数据发送到服务器,但中间人拦截通信并可以查看/修改数据。中间人代表真实服务器向最终用户出示他们的公共证书,他们创建类似的假网站并拦截请求。中间人有他们证书的私钥,所以他们可以查看数据。中间人使用服务器公共证书将请求转发到真实服务器,并将响应转发给最终用户。
    • 这与浏览器无关,这是一个客户端桌面应用程序。我知道用户可以使用 Wireshark 或类似工具来查看流量,但我有兴趣修改数据,这是我想要阻止的底线。
    • 概念将保持不变。在您的情况下,客户端桌面应用程序如何获取公共证书和 CA 证书?
    猜你喜欢
    • 2012-08-27
    • 2016-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    相关资源
    最近更新 更多