保护移动应用免受中间人攻击

时间:2015-10-13 22:43:54

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

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

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

2 个答案:

答案 0 :(得分:2)

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

然而,问题是SSL更新时的开销。您需要使用新的指纹值释放应用程序的更新。这也会阻止人们使用该应用程序,直到他们更新到最新版本。

答案 1 :(得分:0)

阻止此操作的唯一方法是certificate pinning,但如果攻击者能够在之前安装根证书,那么您第一次连接到API时,仍然可以MiM'ed