Security 保护移动应用免受中间人攻击
我们正在开发一个移动应用程序,它通过SSL上的RESTAPI与后端进行通信。移动设备对API调用执行证书验证(使用移动框架中的标准库)。 如果我们尝试通过代理(如Charles)连接移动设备,我们会看到所有流量,但它是加密的——正如预期的那样。 然而,如果我启用SSL代理,生成根证书并在我的设备上安装该证书,我将通过Charles以明文形式看到所有数据,这也是意料之中的 问题是,如何防止这种情况?Security 保护移动应用免受中间人攻击,security,ssl,mobile,man-in-the-middle,Security,Ssl,Mobile,Man In The Middle,我们正在开发一个移动应用程序,它通过SSL上的RESTAPI与后端进行通信。移动设备对API调用执行证书验证(使用移动框架中的标准库)。 如果我们尝试通过代理(如Charles)连接移动设备,我们会看到所有流量,但它是加密的——正如预期的那样。 然而,如果我启用SSL代理,生成根证书并在我的设备上安装该证书,我将通过Charles以明文形式看到所有数据,这也是意料之中的 问题是,如何防止这种情况? 当然,主要目标是仅当设备使用服务器的有效证书调用allowed server时才公开数据。防止这种
当然,主要目标是仅当设备使用服务器的有效证书调用allowed server时才公开数据。防止这种情况的唯一方法是通过,但如果攻击者能够在您首次连接到API之前安装根证书,如果攻击者对设备具有该级别的访问权限,那么防止这种情况发生的唯一方法就是使用SSL拇指打印。您将启动与服务器的连接。检索SSL证书并将其与应用程序代码中的硬编码值进行比较。如果不匹配,请中止连接,不发送数据
但是,问题在于SSL更新时的开销。您需要使用新的指纹值发布应用程序更新。这也会阻止人们使用该应用程序,直到他们更新到最新版本。这是否意味着没有办法防止这种情况发生?不管解决方案有多复杂,怎么可能有?证书的信任链告诉您是否信任正在连接的服务器。但是如果有人能在你第一次连接之前安装根证书,无法确定信任链是否真实。如果有人能够修改设备上的根证书,则意味着他们已经拥有对设备的高级别访问权限,并且如果他们真的想要,则可能会造成损害,而不管使用的SSL如何。同意,但这就是问题所在。对不起,我实际上是在回应op。