Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 保护移动应用免受中间人攻击_Security_Ssl_Mobile_Man In The Middle - Fatal编程技术网

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

Security 保护移动应用免受中间人攻击,security,ssl,mobile,man-in-the-middle,Security,Ssl,Mobile,Man In The Middle,我们正在开发一个移动应用程序,它通过SSL上的RESTAPI与后端进行通信。移动设备对API调用执行证书验证(使用移动框架中的标准库)。 如果我们尝试通过代理(如Charles)连接移动设备,我们会看到所有流量,但它是加密的——正如预期的那样。 然而,如果我启用SSL代理,生成根证书并在我的设备上安装该证书,我将通过Charles以明文形式看到所有数据,这也是意料之中的 问题是,如何防止这种情况? 当然,主要目标是仅当设备使用服务器的有效证书调用allowed server时才公开数据。防止这种

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

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

防止这种情况的唯一方法是通过,但如果攻击者能够在您首次连接到API之前安装根证书,如果攻击者对设备具有该级别的访问权限,那么防止这种情况发生的唯一方法就是使用SSL拇指打印。您将启动与服务器的连接。检索SSL证书并将其与应用程序代码中的硬编码值进行比较。如果不匹配,请中止连接,不发送数据


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

这是否意味着没有办法防止这种情况发生?不管解决方案有多复杂,怎么可能有?证书的信任链告诉您是否信任正在连接的服务器。但是如果有人能在你第一次连接之前安装根证书,无法确定信任链是否真实。如果有人能够修改设备上的根证书,则意味着他们已经拥有对设备的高级别访问权限,并且如果他们真的想要,则可能会造成损害,而不管使用的SSL如何。同意,但这就是问题所在。对不起,我实际上是在回应op。