【问题标题】:Protecting mobile app from man-in-the-middle attack保护移动应用免受中间人攻击
【发布时间】:2015-10-13 22:43:53
【问题描述】:

我们正在开发一款通过 SSL 上的 REST API 与后端通信的移动应用。移动设备对 API 调用执行证书验证(使用移动框架中的标准库)。 如果我们尝试通过代理(例如 Charles)连接移动设备,我们会看到所有流量,但它是加密的 - 正如预期的那样。 但是,如果我启用 SSL 代理,生成根证书并在我的设备上安装该证书,我将通过 Charles 以明文形式查看所有数据 - 再次,正如预期的那样。

问题是,如何防止这种情况发生? 当然,主要目标是仅当设备调用允许的服务器并使用该服务器的有效证书时才公开数据。

【问题讨论】:

    标签: security ssl mobile man-in-the-middle


    【解决方案1】:

    如果攻击者对设备具有该级别的访问权限,那么防止此类事情发生的唯一方法就是使用 SSL 拇指打印。您将启动与服务器的连接。检索 SSL 证书并将其与应用代码中的硬编码值进行比较。如果这不匹配,则中止连接并且不发送数据。

    但是,如果 SSL 更新,则问题是开销。您需要使用新的指纹值发布对应用程序的更新。这也会阻止人们使用该应用,直到他们更新到最新版本。

    【讨论】:

      【解决方案2】:

      防止这种情况发生的唯一方法是通过certificate pinning,但如果攻击者能够在您第一次连接到您的 API之前安装根证书,您仍然可以使用 @987654322 @。

      【讨论】:

      • 这是否意味着没有办法防止这种情况发生?不管解决方案有多复杂。
      • 怎么可能?证书的信任链告诉您是否信任您正在连接的服务器。但是如果有人可以在您第一次连接之前安装根证书,则无法确定信任链是否真实。
      • 对于能够修改设备上的根证书的人来说,这意味着他们已经拥有对设备的高级访问权限,如果他们真的想要也可能会造成损坏,无论使用什么 SSL。
      • 同意,但这就是问题所在。
      • 我很抱歉我实际上是在回应操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-07
      • 2010-09-26
      • 2010-11-04
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多