Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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 防止移动API客户端身份盗窃_Security_Api_Architecture_Mobile_Client - Fatal编程技术网

Security 防止移动API客户端身份盗窃

Security 防止移动API客户端身份盗窃,security,api,architecture,mobile,client,Security,Api,Architecture,Mobile,Client,我们正在开发一个RESTAPI,供两个移动应用程序使用。重要的是,我们能够信任这些移动应用程序的身份。在我们当前的设计中,每个API调用都使用“API密钥”参数进行身份验证,并使用HTTPS进行保护 我担心的是,API密钥嵌入到移动应用程序的每个副本中,这意味着我们无法对其保密。它将出现在数千部手机上,理论上,任何拥有二进制编辑器或HTTP流量分析器的黑客都可以提取API密钥,然后“冒充”其中一个应用程序,向我们发送除了信任之外别无选择的请求。客户端证书似乎也有同样的风险 有解决这个问题的体系结

我们正在开发一个RESTAPI,供两个移动应用程序使用。重要的是,我们能够信任这些移动应用程序的身份。在我们当前的设计中,每个API调用都使用“API密钥”参数进行身份验证,并使用HTTPS进行保护

我担心的是,API密钥嵌入到移动应用程序的每个副本中,这意味着我们无法对其保密。它将出现在数千部手机上,理论上,任何拥有二进制编辑器或HTTP流量分析器的黑客都可以提取API密钥,然后“冒充”其中一个应用程序,向我们发送除了信任之外别无选择的请求。客户端证书似乎也有同样的风险


有解决这个问题的体系结构吗

在不同的地方,包括StackOverflow,都会不时讨论这个问题。简言之,你交给用户的任何东西都不再是你的了。当然,您可以混淆私钥,但我认为至少有三种方法可以绕过您的安全措施

解决问题的唯一方法可能是使用加密设备(智能卡或USB加密令牌),该设备保存私钥和密钥,并且不会泄露出去,但是从技术和可用性角度来看,手持设备的使用非常复杂(如果不是不可能的话)


此外,您可能希望重新考虑您的方法,并允许任何客户机软件使用该服务,因为他们为此付费。您的服务器将验证用户,而不是软件。那么,保持登录数据的机密性将是用户的任务

您想在客户端上以无法检索的方式存储机密吗?HmmDo拥有移动应用程序的各方是否有保留密钥秘密的动机?@Greg-不一定是秘密-只是能够信任应用程序的某种方式。@Adrian-这些应用程序将公开发布,所以,很难说什么样的人会得到它。对不起,可能是我有点笨:)你到底想相信谁?呼叫应用程序或使用呼叫应用程序的人员?我猜这可能只是一个次要的问题,但它会帮助我理解这个问题,并更好地考虑可能的选择。注意,你也可以添加IMEI(Android)或UUID(iPhone)来帮助识别。确保这符合客户(发送确认电子邮件?)的优点。对每个API调用收费肯定有助于激励更好的私钥安全性,但我们的业务依赖于API的免费和应用程序的易用性。这是因为我们的服务器将对用户进行身份验证-我们不希望出现一个欺诈应用程序试图通过我们的API窃取用户密码或暴力破解信用卡详细信息。@RealWorldCoder试图授权您的应用程序可能不是防止API滥用的最佳方法,特别是如果这种滥用可能构成对信用卡详细信息的盗窃。我最好让API更健壮,以防止这种可能性。IP已经对CC授权进行了速率限制。也许改进API的方法需要一个单独的问题。