1

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

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

4

2 回答 2

2

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

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

于 2015-10-13T23:01:25.620 回答
0

防止这种情况的唯一方法是通过证书固定,但如果攻击者能够在您第一次连接到您的 API之前安装根证书,您仍然可以被MiM'ed

于 2015-10-13T22:54:53.570 回答